指针的加减法

本文通过一个具体的C语言程序示例,详细解释了指针的加法运算以及如何使用指针来访问数组元素。文章重点阐述了&a与a的区别,并通过实例说明了a+1与&a+1的不同结果。

Point p ;

p = p + 1; // p做加法, 等价于 p  = p + sizeof(*p);

*p为p指向的类型

 

输出结果为8,2

 

当int a[]时;

a = &a 均指向数组a的首地址

 

 

a + 1 ======   a  + sizeof(*a) = a + 4;

&a + 1 =========  &a + sizeof(a) = a + sizeof(a) = a + 5*4 = a + 20

在C和C++中,char指针可以进行加减法运算。这个运算是针对指针本身,而不是指针所指向的字符。当你对一个char指针进行加法或减法运算时,实际上是在改变指针在内存中的位置。这允许你使用指针访问内存中的特定位置。 这是一个基本的char指针加法示例: ```c #include <stdio.h> int main() { char *ptr = "Hello, World!"; printf("%p\n", (void*)ptr); // 输出地址 printf("ptr + 1: %p\n", (void*)(ptr + 1)); // 输出指针移动一个字符后的地址 printf("ptr + 2: %p\n", (void*)(ptr + 2)); // 输出指针移动两个字符后的地址 return 0; } ``` 这个例子中,我们首先创建了一个指向字符串"Hello, World!"的char指针。然后我们通过指针进行加减法运算,查看指针在内存中的移动情况。输出结果将会显示指针在内存中的新位置。 关于char指针的减法,如果你减去一个大于0的数,那么指针会向相反的方向移动。例如,如果你有一个指向字符串开始的指针,并且减去3,那么它将指向字符串的第三个字符。同样,如果你减去一个小于0的数,那么指针将向相反的方向移动,但是需要注意的是,这通常不会在字符串中产生有效的结果,因为字符串通常以null字符('\0')结尾。 需要注意的是,对char指针进行加减法运算时,必须确保指针指向的数据类型是char或以char为单位的数组。如果指针指向其他类型的数据,如int或float等,那么结果可能无法预期。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值