主要是看你定义指针的类型,比如你定义int *p=NULL; 那么int占4个字节。指向int的指针+1,该指针所指的内存地址要+4;如果你是定义 char *p=NULL; 那么char占1个字节。指向char的指针+1,该指针所指的内存地址只要+1
p+1就是地址加1然后赋值,p本身的值不变;p++是先把p的地址赋给变量,然后p本身加1
有没有人解释一下*(..第一个问题,符号的优先级问题,建议去搜一下C语言符号的优先级。第二个问题,是a是一个地址, a+1是是在a的地址上在加一个,并对这个地址进行解引用,*和地址在一起是解引用的意思,你那个*a已经对a进行
为何它加4*i+j可以表示a[i][j]的地址?有点绕,如果你会的话,可以教教我吗?谢谢。 prgmbaggio 路人 2 int a[3][4] = {{0,1,2,3}, {4,5,6,7}, {8,9,10,11}};行地址 数值a[0]/*a: 0 1 2 3a[1]/*(a+1): 4 5 6 7a[2]/*(a+2): 8 9 10 111.第二行的a[i]在...
先转换成char*再加1
pa为指针,这里小括号优先,先将pa指向的地址+1(后面的pa表示最初地址+1)。原式子变为++*pa[1],这里中括号优先,所以原式子相当于++*(pa[1])。进一步原式相当于++(*(pa[1]))。显然这里pa如果是一级指针,那么pa[1]就是一个值,*pa对值取值就错了。所以假设pa指向一个二维数组int a[3...
c语言在这方面控制的不是很严格,违规使用,可能成功,但是会出一些不可预料的错误,比如你碰到的异常。当你定义s[3]输入4个以上字符时,实际上侵占了别人的空间,那个空间可能是数据,也可能是代码。我记得世界上有个模糊c语言编程大赛,就是利用这种不严格,发现了很多匪夷所思的编程方法,并利用这些...
*p1表示p1指针所指向的元素,表示元素加1。可以改写为p1[0]=p1[0]+1,方便理解登录百度帐号 下次自动登录 忘记密码? 扫二维码下载贴吧客户端 下载贴吧APP看高清直播、视频! 贴吧页面意见反馈 违规贴吧举报反馈通道 贴吧违规信息处理公示4回复贴,共1页 <<返回c语言吧 ©2022 Baidu贴吧协议|隐私政策|吧主制度|意...
指针之间的加法运算没意义,比如char*+char 但指针对常数的加减运算是有意义的 p+i等效于&p[i]
主要是看你 定义 指针 的类型,比如你定义int p=NULL;那么int占4个 字节 。指向int的指针+1,该指针所指的 内存地址 要+4;如果你是定义 char p=NULL;那么char占1个字节。指向char的指针+1,该指针所指的内存地址只要+1