C 语言 指针和数组的结合

0:指针指向数组的时候,可以进行加一和减一的,这个时候好比钟表的指针,加一分钟,指针往后运行一个

1:指针的算术运算:

2:使用指针来处理数组

3:运算符和++运算符结合

4:用数组名作为指针使用

#include <stdio.h>
/*
指针和数组的关系
*/
int main(void){
	//1.指针的算术运算
	int i=100;
	//ip 指针 *ip 表示i变量的别名
	int *ip = &i;
	
	printf("i=%d\n",i);
	printf("ip=%d\n",*ip);
	
	//注意这里指向的是第一个元素的地址
	int a[] ={1,2,3,4,5};
	int *ip2 = &a[0];
	printf("a[0]=%d\n",a[0]);
	printf("*IP2=%d\n",*ip2);
	
	//如果指针执行了数组了
	int anew[] = {11,12,13,14,15};
	int *newp = &anew[0];
	printf("a[0]=%d\n",anew[0]);
	printf("*newp=%d\n",*newp);
	
	newp++;
	printf("*newp=%d\n",*newp);
	newp++;
	printf("*newp=%d\n",*newp);
	newp--;
	printf("*newp=%d\n",*newp);
	
	//两个指针相减,就是数字相减了啊。结果为两个指针之间的距离3 5 之间的个数就是2,就是5-3=2;
	int *superp =&anew[0];
	superp+=4;
	newp--;
	int x = superp-newp;
	printf("x=%d",x);
	
	//使用指针访问数组:
	int g[]={1,88,555,2222};
	//之前输出数组的元素是如下的,
	int size = sizeof(g)/sizeof(int);
	for(int i=0;i<size;i++){
		printf("g[%d]=%d\n",i,g[i]);
	}
	//使用指针,可以这样
	int *point;
	
	for(point=&g[0];point<=&g[size];point++){
		printf("%d\n",*point);
	}
	
	//3: * 和 ++结合
	int a3[] = {111,222,333,444,555};
	int *p=&a3[0];
	
	while(p<&a3[5]){
		printf("%d\n",*p++);//*p++,先执行*p,然后在执行++
	}
	
	
	//4: 数组名作为指针,简单的来说数组指针指向首地址
	//数组名称可以标识一个指向该数组第一个元素的指针,说白了就是a=&a[0];其实就可以说数组a的地址就是a
	int a4[] ={1,2,3,4,5};
	printf("a[0]地址=%d\n",&a[0]);
	printf("数组a的地址:%d\n",a);
	int *pa =&a[0];
	printf("p=%d\n",pa);
	/*	结果
		a[0]地址=2686592
		数组a的地址:2686592
		p=2686592
	*/
	
	int at[10];
	*at=100;//等价于at[0]=100;
	*(at+1)=200;//等价于at[1]=200;
	printf("a[0]=%d\n",at[0]);
	printf("a[1]=%d\n",at[1]);
	
	int aqiu[]={1,2,3,4,5};
	int sum = 0;
	for(int i=0;i<5;i++){
		sum = sum+aqiu[i];
	}
	printf("sum=%d\n",sum);
	
	sum=0;
	int *qiup;
	int sizeqiu = sizeof(aqiu)/sizeof(int);
	for(qiup=aqiu;qiup<=&aqiu[sizeqiu-1];qiup++){
		sum = sum+*qiup;
		//printf("sum=%d",sum);
	}
	printf("sum=%d",sum);
	
	
	return 0;
}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值