C语言关于指针地址加1 那么他是怎么移动的呢?

还是没好好的理解。 好像是1是INT类型 占4个字节 所以指针移动了4位,还是没怎么搞懂额 大侠们有人知道吗。太抽象了。

主要是看你定义指针的类型,比如你定义int *p=NULL; 那么int占4个字节。指向int的指针+1,该指针所指的内存地址要+4;如果你是定义 char *p=NULL; 那么char占1个字节。指向char的指针+1,该指针所指的内存地址只要+1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-09
说实话,我不懂你说的意思。C语言中,指针地址加一的话,就是指针变量的改变。这改变之后,经过编译交由硬件实现。硬件在内存层面上对数据进行移动。
第2个回答  2022-01-07
c语言中关于指针+1需要非常注意细节,比如下面的两个是完全不同的概念:
*p++
(*p)++
一个是对指针进行+1,一个是对指针指向的地址里面的值进行+1。
指针+1是将指针指向下一个地址空间,比如申请了一个int类型的数组:
int a[] = {2,3,4};
*p = &a[0];
*p++;
p则指向了数组中第二个元素,也就是数组的第一个元素后面元素的地址空间。
printf("%d\n",*p);
输出的就是3这个整形数组中第2个值。
第3个回答  2020-12-31
主要是看你定义指针的类型,比如你定义int *p=NULL; 那么int占4个字节。指向int的指针+1,该指针所指的内存地址要+4;如果你是定义 char *p=NULL; 那么char占1个字节。指向char的指针+1,该指针所指的内存地址只要+1
刚学习C语言的朋友,对指针“移动”可能不太理解。举个例子,例如下述代码:

int a = 1;

那么大家都知道a + 1肯定就是2了。如果是指针呢?例如:

int *p = 1;

p + 1还是2吗?

为了说明问题,请看以下代码:
相似回答