C语言指针初学者 想问几个问题
#include<stdio.h>main(){floata=0,b=6.0,*p;p=&a;printf("Inputdata:");scanf("%f",p);*p+...
#include<stdio.h>
main()
{ float a=0,b=6.0,*p;
p=&a;
printf("Input data:");
scanf("%f",p);
*p+=2;
printf("%f",*p);
}
请看这个程序 我想问几个问题
1.为什么sanf语句中是p 而不是*p ??
2.因为*p; p=&a;可以写成 *p=&a ;为什么printf("%f",*p);里 逗号后面是*p?而不是 &a 或 p??? 展开
main()
{ float a=0,b=6.0,*p;
p=&a;
printf("Input data:");
scanf("%f",p);
*p+=2;
printf("%f",*p);
}
请看这个程序 我想问几个问题
1.为什么sanf语句中是p 而不是*p ??
2.因为*p; p=&a;可以写成 *p=&a ;为什么printf("%f",*p);里 逗号后面是*p?而不是 &a 或 p??? 展开
展开全部
scanf函数要求输入的是地址..
上面已经声明 float *p;就是p已经是代码地址了.
所以直接传入p
//p=&a;可以写成 *p=&a
a是一个数值,p是代表地址,,&a代表的代表a数据的地址
只有地址才能辅助给地址..
所以 p=&a
*p = &a是不对的.
*p 已经代表数值了.不是地址,,但是 &a是地址..所以不行
printf("%f"),后面要求传入的是数值,不是地址,,所以要用*p还不是p
否则就会变成打印a的地址,而不是a的数值了.
上面已经声明 float *p;就是p已经是代码地址了.
所以直接传入p
//p=&a;可以写成 *p=&a
a是一个数值,p是代表地址,,&a代表的代表a数据的地址
只有地址才能辅助给地址..
所以 p=&a
*p = &a是不对的.
*p 已经代表数值了.不是地址,,但是 &a是地址..所以不行
printf("%f"),后面要求传入的是数值,不是地址,,所以要用*p还不是p
否则就会变成打印a的地址,而不是a的数值了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
scanf接受的是指针,用来修改被指向的内容。这里p是指向变量a的指针,*p就是变量a了。
p=&a不可以写成*p = &a。那个float *p = &a;只能说C/C++类型书写格式比较恶心。那个*是和float连在一起表示float*类型。结果上,*p这里等同于a。p等同于&a。
p=&a不可以写成*p = &a。那个float *p = &a;只能说C/C++类型书写格式比较恶心。那个*是和float连在一起表示float*类型。结果上,*p这里等同于a。p等同于&a。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1。scanf 语句中的的是地址 *p是变量 p是地址
2. *p=&a是一种简写 printf("%f",*p)中要输出的是变量而不是地址
*p是变量 &a和p都是地址
2. *p=&a是一种简写 printf("%f",*p)中要输出的是变量而不是地址
*p是变量 &a和p都是地址
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询