
用%p和%d输出指针变量的值,各是什么含义?
各位老师和同学,我学完指针这章了,还是有点不明白。例如:指针变量p的基类型是double,那么p本身也是double类型的吗?还是int类型的?因为存储单元的地址都不会很...
各位老师和同学,我学完指针这章了,还是有点不明白。
例如:指针变量p的基类型是double,那么p本身也是double类型的吗?还是int类型的?因为存储单元的地址都不会很长,而且没有小数,所以p本身是不是应该是int类型的?也就是说,指针变量本身的类型都是int?
另外,我编了一个程序:
int a,*p;
p=&a;
printf("%p,%p,%d,%d,%p\n",p,&a,p,&a,a);
运行结果是:
0013FF7C,0013FF7C,1310588,1310588,CCCCCCCC
%p和%d输出的指针变量p的值,各是什么含义呢?哪一个是p本身所在的地址的值?哪一个是a的地址值?
有点刨根问底,但没了解清楚心里很别扭,先谢谢大家! 展开
例如:指针变量p的基类型是double,那么p本身也是double类型的吗?还是int类型的?因为存储单元的地址都不会很长,而且没有小数,所以p本身是不是应该是int类型的?也就是说,指针变量本身的类型都是int?
另外,我编了一个程序:
int a,*p;
p=&a;
printf("%p,%p,%d,%d,%p\n",p,&a,p,&a,a);
运行结果是:
0013FF7C,0013FF7C,1310588,1310588,CCCCCCCC
%p和%d输出的指针变量p的值,各是什么含义呢?哪一个是p本身所在的地址的值?哪一个是a的地址值?
有点刨根问底,但没了解清楚心里很别扭,先谢谢大家! 展开
展开全部
%p输出和%d结果是样的,只不过%p输出是16进制表示,0x0013FF7C == 1310588。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int a=23,*p;
p=&a;
printf("%p,%p,%d,%d,%p\n",p,&a,p,&a,a);
好像没有%p吧。
%p输出的随机值。
两%d都是p的值。
p=&a;
printf("%p,%p,%d,%d,%p\n",p,&a,p,&a,a);
好像没有%p吧。
%p输出的随机值。
两%d都是p的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
dd
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
指针是一种数据类型,与其它的数据类型不同的是指针是一种“用来存放地址值的”变量。举一个简单的例子:
如果定义了一个整型变量,根据整型变量的特点,它可以存放的数是整数。
如:int a; a=100; 这样就把整型常量赋给了变量a。但是如果写成这样:a=123.33;就会出问题,最后输出变量a的值结果是123。现在说到指针,其实地址值也是一个整型数,如某某变量的地址值为36542,说明这个变量被分配在内存地址值为36542的地方。能不能这样进行推理,既然地址值也是整型数,整型变量正好可以用来存放整型数,那不是一个整型变量可以用来存放地址的值吗。程序写成下面这样:
int a,b;
a=&b;
很明显,这样写是错误的。原因在于不能简单地把地址理解为整型数。
应有这样的对应关系: 地址值<--->指针; 整型数<--->int 型变量。
所以有这样的说法:“指针就是地址”(指针就是存放地址值的一种数据类型)
下面是一段正确的程序:
int a,*p;
p=&a; /*把变量a的地址值赋给指针p*/
指针是C语言的精华 利用它可以轻松实现对硬件的操作 因此有人说C是高级语言中的低级语言 其他的高级语言如JAVA是没有指针的概念的 但这并不代表它不会用到指针 它所用到的指针操作是被编译系统封装好了的 用户只需调用相关的操作语句即可 关不用关心该操作的具体实现方式 在其他高级语言中指针操作对于用户来说是透明的
如果定义了一个整型变量,根据整型变量的特点,它可以存放的数是整数。
如:int a; a=100; 这样就把整型常量赋给了变量a。但是如果写成这样:a=123.33;就会出问题,最后输出变量a的值结果是123。现在说到指针,其实地址值也是一个整型数,如某某变量的地址值为36542,说明这个变量被分配在内存地址值为36542的地方。能不能这样进行推理,既然地址值也是整型数,整型变量正好可以用来存放整型数,那不是一个整型变量可以用来存放地址的值吗。程序写成下面这样:
int a,b;
a=&b;
很明显,这样写是错误的。原因在于不能简单地把地址理解为整型数。
应有这样的对应关系: 地址值<--->指针; 整型数<--->int 型变量。
所以有这样的说法:“指针就是地址”(指针就是存放地址值的一种数据类型)
下面是一段正确的程序:
int a,*p;
p=&a; /*把变量a的地址值赋给指针p*/
指针是C语言的精华 利用它可以轻松实现对硬件的操作 因此有人说C是高级语言中的低级语言 其他的高级语言如JAVA是没有指针的概念的 但这并不代表它不会用到指针 它所用到的指针操作是被编译系统封装好了的 用户只需调用相关的操作语句即可 关不用关心该操作的具体实现方式 在其他高级语言中指针操作对于用户来说是透明的
参考资料: http://ask.koubei.com/question/1307050100563.html
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询