下面C语言程序段为何错误,错误在哪里,要求详细解析!谢谢!
A、int*P;scanf("%d",&p);B、int*p;scanf("%d",p);上面的程序段,的p都是小写的,A、中的大写是打错的。谢谢!A、int*p;sca...
A、int *P;scanf("%d",&p);
B、int *p;scanf("%d",p);
上面的程序段,的 p 都 是小写的,A、中的大写是打错的。谢谢!
A、int *p;scanf("%d",&p);
B、int *p;scanf("%d",p); 展开
B、int *p;scanf("%d",p);
上面的程序段,的 p 都 是小写的,A、中的大写是打错的。谢谢!
A、int *p;scanf("%d",&p);
B、int *p;scanf("%d",p); 展开
4个回答
展开全部
指针是一个存储计算机内存地址的变量。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、NULL指针和未初始化指针。
&是地址操作符,用来引用一个内存地址。通过在变量名字前使用&操作符,我们可以得到该变量的内存地址。
对于scanf输入函数,用法: int scanf(char *format[,argument,...]);
scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以
读入任何固有类型的数据并自动把数值变换成适当的机内格式。
其调用格式为: scanf("<格式化字符串>",<地址表>);
现在我们看题,由于指针*p是一种形象化的地址,一般情况下可以认为是一个地址,所以对于A选项中的&p相当于对一个地址再取地址,不符合scanf函数用法,所以错误。
对于B,按上面说的p是个地址,应该正确,其实不是。这是一道选择题,如果一个完整的程序中这么写不仅错误,而且是一件很危险的事情!!!因为你定义的int*p是一个指针变量,但是没有指定p指向哪里,很可能指向重要的系统文件,这样向p指向的地址写数据就破坏了电脑软件,很危险!!!对于B选项,可以用p=&a(a为已声明的变量)来指明p所指位置,这样用scanf("%d",p)就可以了。
希望对你有帮助哦!
&是地址操作符,用来引用一个内存地址。通过在变量名字前使用&操作符,我们可以得到该变量的内存地址。
对于scanf输入函数,用法: int scanf(char *format[,argument,...]);
scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以
读入任何固有类型的数据并自动把数值变换成适当的机内格式。
其调用格式为: scanf("<格式化字符串>",<地址表>);
现在我们看题,由于指针*p是一种形象化的地址,一般情况下可以认为是一个地址,所以对于A选项中的&p相当于对一个地址再取地址,不符合scanf函数用法,所以错误。
对于B,按上面说的p是个地址,应该正确,其实不是。这是一道选择题,如果一个完整的程序中这么写不仅错误,而且是一件很危险的事情!!!因为你定义的int*p是一个指针变量,但是没有指定p指向哪里,很可能指向重要的系统文件,这样向p指向的地址写数据就破坏了电脑软件,很危险!!!对于B选项,可以用p=&a(a为已声明的变量)来指明p所指位置,这样用scanf("%d",p)就可以了。
希望对你有帮助哦!
展开全部
A int *p,定义了一个指向int型数据的指针,其内容不可知,也就是说它指向的地址是随机的。如果此时使用scanf(“%d”,&p);向一个随机的地址中强行放入一个数,这就比较麻烦了,对吧?有可能造成严重的后果啊。
B p是一个指针,scanf读取数据的话需要用到&,代表读到这个变量里面去,这里少了&,所以错误
B p是一个指针,scanf读取数据的话需要用到&,代表读到这个变量里面去,这里少了&,所以错误
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先A,p是指针,里面存储的是地址,而&p(取p的地址)是取地址的意思,对于B,则是输出p中储存的地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-03-08
展开全部
nt *P;scanf("%d",&p); 取地址符有问题,回去好好看一下指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询