我想编写一个小程序,通过 argv 用户输入,该程序会出现分段错误。我对 C 很陌生,但我认为以下代码可以完成这项工作:
int main(int argc, char *argv[])
{
int bufferSize;
char * buffer[100];
unsigned int i;
if (argc > 1) {
bufferSize = atoi(argv[1]);
for (i = 0; i < bufferSize; ++i)
*( buffer + i ) = i;
}
return 0;
}
我的想法是程序初始化(?)一个指向特定大小缓冲区的指针。如果用户然后输入一个大于缓冲区大小的数字,它将写入未初始化的内存,因此得到一个段。过错。这个推理是否正确?
附言。编译时,I get a assignment makes pointer from integer without a cast
警告,有人可以告诉我为什么会这样吗?谢谢