void main()
{
int name[8]={1,2,3,4,5,6,7,8}
int *p1=name,*p2=p1+7;
for(int t;p1<p2;)
{..
....
..}
请问这两个指针比较大小,依据的是什么?是指向地址的值吗?
只有两个指向同一数组的指针才可以比较。指针即地址,指针比较是地址前后的比较。对于这两个指针,指向这个数组前面元素的指针小于指向后面元素的指针。不是根据指向的值。
指针本身也是一个变量,这个变量的值是一个地址,变量的字节大小在32位下是4个字节。p2 = p1+7,因为p1是指向int型的指针变量,所以p2的值 等于p1的值+sizeof(int)*7;
有一个概念明确了就行,指针变量的存储内容是什么?是地址,地址就是一串数字,所以数字当然就有大小,所以可以进行比较。
这里比较的是指针地址里面的值。。即name[0] 和 name[7]。。。
指针大小是固定的4个字节,比起来没有什么意义。