2012-01-19 91 views

回答

12

C中的“字符串”是字符缓冲区的地址。
您想要scanf填充缓冲区中的内存,该内存由变量指向。

相比之下,int是一块内存,而不是地址。为了让scanf填充该内存,您需要传递其地址。

1

由于标识bufchar buf[512];降级为指向数组的第一个元素的指针,因此不需要指定指向scanf参数中的缓冲区的指针。通过传递&buf传递给scanf的指针现在是一个双向间接指针(它是一个指向缓冲区开始指针的指针),并可能导致程序崩溃或其他不良行为。

相关问题