编程论坛
注册
登录
编程论坛
→
C语言论坛
char类型指针大小是4 为什么+1只加1?
darklotte
发布于 2020-11-20 23:24, 2105 次点击
char类型指针是4,char *pc;pc=pc+1; sizeof(char)=1字节,经过pc=pc+1之后,pc加了1个字节
4 回复
#2
请输入密码
2020-11-21 08:39
指针本身地址是常量值,4个字节不变。
指针指向下一个char数据,也就是指向下一个字节,故指向引用的字节+1。
#3
darklotte
2020-11-21 20:09
char类型指针大小是4 p=p+1 应该加4 为什么加1呢
#4
llc_xz
2020-11-22 06:23
sizeof(char)=1字节 表示一个字符变量占用1个字节,字符型指针加1表示指向下一个字符,不管指针是几个字节,指针加1对应加几个字节是按指针指向的数据类型所占的字节数执行的,字符型占用1个字节,所以字符型指针值加1,就是地址加1,指向下一个字符,如果是加4,指针将指向当前字符后面的第4个字符了。
总结:指针加1,即指针指向的数据类型占用几个字节指针值就加几(指针值本身就是内存地址,内存地址的编址是按字节进行的。),只有这样指针才可以正确指向该数据类型的下一个值。
[此贴子已经被作者于2020-11-22 06:29编辑过]
#5
zbjzbj
2020-11-22 14:49
旅馆7楼第一个房间是7001,下一个房间那就是7002,这就是指针(指向房间的地址编号)+1
不是7005
#6
自由而无用
2021-08-10 10:03
eg:
int *q;
char *p;
char a, b;
char x[10];
&q = 0x12ff94;
&p = 0x12ff98;
&a = 0x12ff9c;
&b = 0x12ff9d;
&x[0] = 0x12ff9e;
&x[1] = 0x12ff9f;
p = x = 0x12ff9e;
p + 1 = &x[1] = 0x12ff9f;
q = (int *)p = 0x12ff98;
q + 1 = p[4] = &x[4];
[此贴子已经被作者于2021-8-10 10:06编辑过]
1