code blocks运行错误的scanf语法,为什么不会报错?

不会报错的原因是指针本身也是一个int型值,所以你传递一个int,编译会通过。但运行时程序会把N的值当地址去访问该地址,由于一般默认值为0,所以找0x00000000地址肯定是不能写入数据的,所以程序会崩溃

 

scanf("%d",N);

改为

scanf("%d",&N);

变量名称前面必须加&符号,表示传地址。

scanf的第二个参数是变量地址,地址是一个0x000000xx的长整型数值,N的类型可以转换成长整型,编译器无法识别你输入的是地址还是变量,所以不会报错,但是在访问这个地址的时候就会出现段错误。如有帮助,请采纳一下,谢谢。