g1063496360 发表于 2021-4-18 15:37:13

指针小问题

#include <stdio.h>

void main()
{
        int *p;
        int a={1,2,3,4,5};
        p=&a;
        printf("%d\n",p);
        printf("%d\n",p+1);
        printf("%d\n",p);
        printf("%d\n",p++);
        printf("%d\n",p);
}


请问大神 我这里p+1的话 p的指向地址是不变的但是为啥p++他指向的地址改变了呢 是因为p++的话 p=p+1了嘛

qiuyouzhi 发表于 2021-4-18 15:39:52

是的
请补习自增自减运算符

g1063496360 发表于 2021-4-18 15:40:54

qiuyouzhi 发表于 2021-4-18 15:39
是的
请补习自增自减运算符

好的 靓仔{:10_253:}

g1063496360 发表于 2021-4-18 15:46:50

qiuyouzhi 发表于 2021-4-18 15:39
是的
请补习自增自减运算符

#include <stdio.h>

void main()
{
        int *p,*o;
        int a={1,2,3,4,5};
        p=&a;
        o=a;
        printf("%d\n",p);
        printf("%d\n",o);
        printf("%d\n",p-o);

}


再弱弱的问一下 P-O为啥是2捏而不是他们地址差

qiuyouzhi 发表于 2021-4-18 15:51:45

本帖最后由 qiuyouzhi 于 2021-4-18 15:53 编辑

g1063496360 发表于 2021-4-18 15:46
再弱弱的问一下 P-O为啥是2捏而不是他们地址差

它们的地址差就是这个
p是第2个元素的地址,
o是第0个元素的地址,
p - o == 2 - 0 == 2

g1063496360 发表于 2021-4-18 15:54:41

qiuyouzhi 发表于 2021-4-18 15:51
它们的地址差就是这个
p是第2个元素的地址,
o是第0个元素的地址,


可是我是把他们的地址相减啊相差8个字节 为啥不是8呢

qiuyouzhi 发表于 2021-4-18 15:57:55

g1063496360 发表于 2021-4-18 15:54
可是我是把他们的地址相减啊相差8个字节 为啥不是8呢

和字节无关
地址是个十六进制的数
你说的是大小

g1063496360 发表于 2021-4-18 16:03:46

qiuyouzhi 发表于 2021-4-18 15:57
和字节无关
地址是个十六进制的数
你说的是大小

感谢顶级大聪明{:10_288:}
页: [1]
查看完整版本: 指针小问题