在c语言中,有如下式子:int a[5],*pa=a; pa+=2; 他说:*pa=a+2*2=a+4,而不是=a+2 这是为什么呢?这个问题,在《c语言程序设计教程》书上有原题,我只是不懂pa为什么等于a+4而不是a+2.可是在后面的章节中,
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/03 22:13:49
![在c语言中,有如下式子:int a[5],*pa=a; pa+=2; 他说:*pa=a+2*2=a+4,而不是=a+2 这是为什么呢?这个问题,在《c语言程序设计教程》书上有原题,我只是不懂pa为什么等于a+4而不是a+2.可是在后面的章节中,](/uploads/image/z/8007844-4-4.jpg?t=%E5%9C%A8c%E8%AF%AD%E8%A8%80%E4%B8%AD%2C%E6%9C%89%E5%A6%82%E4%B8%8B%E5%BC%8F%E5%AD%90%EF%BC%9Aint+a%5B5%5D%2C%2Apa%3Da%3B+pa%2B%3D2%3B+%E4%BB%96%E8%AF%B4%EF%BC%9A%2Apa%3Da%2B2%2A2%3Da%2B4%2C%E8%80%8C%E4%B8%8D%E6%98%AF%3Da%2B2+%E8%BF%99%E6%98%AF%E4%B8%BA%E4%BB%80%E4%B9%88%E5%91%A2%3F%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%2C%E5%9C%A8%E3%80%8Ac%E8%AF%AD%E8%A8%80%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E6%95%99%E7%A8%8B%E3%80%8B%E4%B9%A6%E4%B8%8A%E6%9C%89%E5%8E%9F%E9%A2%98%2C%E6%88%91%E5%8F%AA%E6%98%AF%E4%B8%8D%E6%87%82pa%E4%B8%BA%E4%BB%80%E4%B9%88%E7%AD%89%E4%BA%8Ea%2B4%E8%80%8C%E4%B8%8D%E6%98%AFa%2B2.%E5%8F%AF%E6%98%AF%E5%9C%A8%E5%90%8E%E9%9D%A2%E7%9A%84%E7%AB%A0%E8%8A%82%E4%B8%AD%2C)
在c语言中,有如下式子:int a[5],*pa=a; pa+=2; 他说:*pa=a+2*2=a+4,而不是=a+2 这是为什么呢?这个问题,在《c语言程序设计教程》书上有原题,我只是不懂pa为什么等于a+4而不是a+2.可是在后面的章节中,
在c语言中,有如下式子:int a[5],*pa=a; pa+=2; 他说:*pa=a+2*2=a+4,而不是=a+2 这是为什么呢?
这个问题,在《c语言程序设计教程》书上有原题,我只是不懂pa为什么等于a+4而不是a+2.可是在后面的章节中,又出现了*(pa+n)和*(a+n)表示为数组的各元素即等效于
a[n].为什么会矛盾呢?而且书上有这样的一句话:数组指针变量向前或向后移动一个位置,和地址加1或减1在概念上是不同的.何解?
在c语言中,有如下式子:int a[5],*pa=a; pa+=2; 他说:*pa=a+2*2=a+4,而不是=a+2 这是为什么呢?这个问题,在《c语言程序设计教程》书上有原题,我只是不懂pa为什么等于a+4而不是a+2.可是在后面的章节中,
注意 pa+n指的是pa指向对象+n,也就是指向后面第n个对象.
题目中的a+4意思应该是a的地址+4,比方说原来pa = a = (short *)0x100,现在pa+2就是0x104,
也就是a地地址上+4,
但是实际上,如果在程序中写a+2,实际上和pa+2相等的,因为a的类型大小本身就是2,所以感觉是你的理解没有错,书上也没有错,但书上的意思表达不清,一句话:
((unsigned long) a) +4 = (unsigned long) (a+2)
你理解的a+2,何书上说的a+4是一个值