指针(1): 指针运算

介绍指针的三种运算方式:加、减、关系运算

数组在内存中是连续存放的,只要知道第⼀个元素的地址,顺藤摸⽠就能找到后⾯的所有元素。所以我们以数组为例子说明指针运算的问题。

1.指针 +/- 整数

#include <stdio.h>  
int main()
{
	int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
	int i=0;
	int* p = arr;
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (i = 0; i < sz; i++)
	{
		printf("%d ", *p);
		p++;
	}
	return 0;
}
include <stdio.h>
int main()
{
	int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
	int i = 0;
	int* p = arr;
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (i = 0; i < sz; i++)
	{
		printf("%d ", *(p+i));
	
	}
	return 0;
}

原先我们在循环中通过下标的方式访问数组中的元素。学习完指针之后我们就可以找到数组首元素的地址,在每次循环中通过指针+1的方式,找到数组每个元素的地址并把它们打印出来。

上面是两种指针+整数的例子。我们可以在每次循环中让p+1,得到下一个数组元素,也可以写成p+i的方式访问后面的数组。

很显然,指针+/-整数后,得到的结果是一个新的指针。

2.指针-指针

因为指针+/-整数,得到的结果是一个新的指针。所以指针-指针的结果是一个整数。下面举一个模拟strlen函数的例子。

#include <stdio.h>  

int lenth(char* p)
{
	char* s = p;  //将首地址交给s
	while (*p != '\0')
	{
		p++;
	}
	return p-s;  //指针减指针
}
int main()
{
	char ch = "abcdef";
	printf("%d", lenth("abcdef"));
	return 0;
}

3.指针关系运算

#include <stdio.h>
int main()
{
	int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
	int* p = arr;
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
	while (p + i <arr+sz)
	{
		printf("%d ", *(p + i));
		i++;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值