C语言指针的运算(指针加或减一个整数的意义)

        指针可以加上或减去一个整数。指针的这种运算的意义和通常的数值的加减运算的意义是不一样的,以单元为单位。
例一:
#include<stdio.h>

int main()
{
	char a[]="0123456789";
	int *ptr = (int *)a;
	char *cp = a;
	printf("%d\t%d\n",sizeof(int),sizeof(char));
	while(*ptr!='\0')
	{
		printf("%c\n",*ptr);
		ptr++;
	}
	//while(*cp!='\0')
	//{
	//	printf("%c\n",*cp);	
	//	cp++;
	//}
	
	return 0;
}
 

运行结果:

        指针 ptr 被加了 1,编译器是这样处理的:它把指针 ptr 的值加上了 sizeof(int),在 32 位程序中,是被加上了 4,因为在 32 位程序中,int 占 4 个字节。由于地址是用字节做单位的,故 ptr 所指向的地址由原来的变量 a 的地址向高地址方向增加了 4 个字节。由于 char 类型的长度是一个字节,所以,原来 ptr 是指向数组 a 的第 0 号单元开始的四个字节,此时指向了数组 a 中从第 4 号单元开始的四个字节。
例二:
#include<stdio.h>

int main()
{
	char a[]="0123456789";
	int *ptr = (int *)a;
	char *cp = a;
	printf("%d\t%d\n",sizeof(int),sizeof(char));
	//while(*ptr!='\0')
	//{
	//	printf("%c\n",*ptr);
	//	ptr++;
	//}
	while(*cp!='\0')
	{
		printf("%c\n",*cp);	
		cp++;
	}
	
	return 0;
}
运行结果:


  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言指针运算指针整数指针相互指针关系运算的介绍如下: 1. 指针运算 指针运算包括指针整数指针相互指针关系运算等。指针整数是指将指针加上减去一个整数,得到一个新的指针指针相互是指将两个指针、相或相后再加上一个整数,得到一个新的指针指针关系运算是指比较两个指针的大小关系。 2. 指针整数 指针整数的结果是一个新的指针,新指针指向原指针所指向的地址加上减去整数个字节的地址。例如,int* p = arr; p+1表示p指向的地址加上4个字节,指向arr的地址。 3. 指针相互 指针相互是指将两个指针、相或相后再加上一个整数,得到一个新的指针。例如,p1-p2表示p1和p2之间的距离,结果是一个ptrdiff_t类型的整数。 4. 指针关系运算 指针关系运算包括大于、小于、等于、不等于等运算符。两个指针之间的大小关系取决于它们所指向的地址的大小关系。如果两个指针指向同一个数组中的元素,那么它们之间的大小关系取决于它们所指向的元素的下标。 示例代码如下: ```c #include <stdio.h> int main() { int arr[10] = {0}; int *p = arr; char *pa = arr; int i = 0; for (i = 0; i < 10; i++) { *(p + i) = 1; // 每次访问1个整形 *(pa + i) = 1; // 每次访问1个字节 } int *p1 = arr; int *p2 = &arr[5]; printf("p1 < p2: %d\n", p1 < p2); // 输出:1 printf("p1 > p2: %d\n", p1 > p2); // 输出:0 printf("p2 - p1: %d\n", p2 - p1); // 输出:5 return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值