C语言--指针数组和数组指针

<pre name="code" class="cpp">#include <stdio.h>
//指针数组 
int main(int argc, const char *argv[])
{
	int a = 10;
	int b = 20;
	int c[5] = {0,1,2,3,4};
	
	//指针数组,本质是数组,元素是指针类型

    //申明一个大小为3的指针数组 
	int *p[3]; 						
	p[0] = &a;  //给第一个元素赋值变量a的地址 
	p[1] = &b;  //给第二个元素赋值变量a的地址 
	p[2] = &c[1];//给第三个元素赋值数组c的第二个元素的地址 
	
	printf("a     = %d\n",a); //10 
	printf("*p[0] = %d\n",*p[0]);//获取指针数组第1个元素的值(内存地址) 并获取该内存地址对应的值 10
	printf("b     = %d\n",b);//20
	printf("*p[1] = %d\n",*p[1]);//获取指针数组第1个元素的值(内存地址) 并获取该内存地址对应的值 20 

	printf("*c[3]     = %d\n",c[3]); //数组变量C向前移动三个单位  并取值   3
	printf("*(p[2]+2) = %d\n",*(p[2]+2));//指针数组向前移动2个单位并取值(该值为内存地址),再向前移动两个单位 取值  3
	printf("p[2][2]   = %d\n",p[2][2]);  //同上 3 
	return 0;
}
 

#include <stdio.h>
//数组指针 
int main(int argc, const char *argv[])
{
	int a[3][4] = {{0,1,2,3},
				   {4,5,6,7},
				   {8,9,10,11}};

//定义一个数组指针,并赋值 
	int (*p)[4] = a;

//以数组变量来取值 
	printf("%d\n",a[1][2]);
	printf("%d\n",*(a[1]+2));
	printf("%d\n",*(*(a+1)+2));

//以指针变量来取值 
	printf("%d\n",p[1][2]);
	printf("%d\n",*(p[1]+2));
	printf("%d\n",*(*(p+1)+2));
	
//	int b[4] = {10,11,12,13}; 				
//	p = &b; //也可以指向一维数组
	return 0;
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值