C中指针数组与数组指针

#include<stdio.h>
void main()
{
        int a=10,b=90,c=100;
        int *p=&a;
        int *pp;
	    int (*ppp)[2];//为二维数组定义的指针,注意不要写成*ppp[2],这样应该是一个指针数组。
	    int *ppp_array[2];   //指针数组
	
        int x[3]={1,2,3};
	    int y[3][2]={{1,2},{3,4},{5,6}};
	    ppp_array[0]=&b;
	    ppp_array[1]=&c;
	
        pp=x;
	    ppp=y;
	    printf("%d\n",*(ppp_array[0]));//b=90
	
	    printf("%d\n",*(*ppp+1));//取第0行第1个数据,也就是2
        printf("%d\n",*p);    //10
        printf("%d\n",*(pp+1));   //取第1个数据,也就是2
	    printf("%d\n",*(pp+1)+5);  //2+5=7
        printf("%d\n",*pp+5);     //取第一个数据2+5=7
}

以上代码有注释,可直接复制执行。

理论输出:
90
2
10
2
7
7
实际输出:
90
2
10
2
7
6

数组指针

数组指针本质是一个指针,申明方式如下:

int (*p)[8]; \\注意,这里的括号不能省略,否则就变成了指针数组了。

指针数组

指针数组本质上时一个数组,只是数组中的每一个元素都是一个指针。

int *p[8];         \\p[0]是一个指针,指向一个一维数组或者一个数。

对一维指针的理解

int a=0;
int aa[4]={1,2,3,4};
int *p;
p=&a;   //这里的&不能省略
p=aa;  
//这种写法和下一行的写法都会得到一样的效果,
//原因是aa本来就是第一个元素a[0]的地址。
p=&aa[0];   //取第一个的地址

一维指针既可以指向一个数,也可以指向一个一维数组,其实一个数也可以看成只有一个数的一维数组,请看下面:

int a=0int aa[1]={0};
int *p;
p=&a;
p=&aa[0];
//我们可以看到,无论是一个数还是只有一个数的一维数组,
//我们都可以使用相似的方式来得到他们的地址,这就是一维指针的用法统一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值