C语言指针中的 p与 *p的区别

[复制链接]
查看11 | 回复8 | 2011-4-11 01:25:26 | 显示全部楼层 |阅读模式
回复

使用道具 举报

千问 | 2011-4-11 01:25:26 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-2176999\">如果题中没有a[10]原来int a=1;p=p=p 1那么现在的p值是多少呢
回复

使用道具 举报

千问 | 2011-4-11 01:25:26 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-2217940\">那么p就指向了a的下一个整形单元。这是非常危险的操作:因为你不知道a之后的整形空间是什么量!
回复

使用道具 举报

千问 | 2011-4-11 01:25:26 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-2177362\">我的题目是这样的
#include stdio.h

void f(int *p,int *q) ;

main()

{ int m=1,n=2,*r=

f(r,printf(\"%d.%d\",m,n);

}

void f(int *p,int *q)

{ p=p 1;*q=*q 1;}
回复

使用道具 举报

千问 | 2011-4-11 01:25:26 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-2177710\">原题目里是这么个意思:
令p=defds123m,然后传进函数f里去,f里的形参也是p,但是不是传进去的那个实参p,你可以换成其它参数以区别比如pp,此时pp 1后指向了内存中的下一个地址,但是没有操作,函数f结束后pp被释放,一切照旧。f的第二个形参q指向的是n的地址,此时它指向的数据被加1,也就是n 1,所以函数f结束后n变成了3。故输出了1.3。
回复

使用道具 举报

千问 | 2011-4-11 01:25:26 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-2177978\">如果p原来是1,经过p后指向下一个地址 但是下一个地址没有值 此时p是不是保留上面的值是不是这个意思
回复

使用道具 举报

千问 | 2011-4-11 01:25:26 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-2178041\">如果没有下个地址,则p后指向的地址是无法定位的,一旦赋值则会报错!
回复

使用道具 举报

千问 | 2011-4-11 01:25:26 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-2177801\">如果p原来是1,经过p后指向下一个地址 但是下一个地址没有值 此时p是不是保留上面的值是不是这个意思
回复

使用道具 举报

千问 | 2011-4-11 01:25:26 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-2178018\">因为你在传递n的时候使用的是单向的值传递,所以m的值是不会改变的..........如果你把函数的类型改了,加上return语句,再执行输出....相信你就会看到效果的不同的............
而指针和数组传递的是地址,所以不管你加不加return语句,它在内存中的值都已经发生了改变了.......
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行