指针 3

二维数组和指针的关系

p = &a[0][0];

p = a[0];

p = *a;

q = a;

二维数组的数组名是指向第一行所有元素的一个数组指针

二维数组访问第m行第n列元素

a[m][n];

*(a[m] + n);

*(*(a+m)+n);

p = a[0]; *(p + m * N + n)

q = a; *((q + m) + n)

*(q[m] + n);

q[m][n];

a 指向第一行元素,a[1] 指向第二行

int main(void)
{    
    int a[2][3] = {1, 2, 3, 4, 5, 6};
    int *p = NULL;    
    int (*q)[3] = NULL;    
     p = a[0];    
     q = a;    
printf("=========================\n");    
printf("&a[0][0]:%p\n", &a[0][0]);    
printf("&a[0][1]:%p\n", &a[0][1]);    
printf("&a[0][2]:%p\n", &a[0][2]);
printf("&a[1][0]:%p\n", &a[1][0]);    
printf("&a[1][1]:%p\n", &a[1][1]);    
printf("&a[1][2]:%p\n", &a[1][2]);    
printf("=========================\n");    
printf("a:%p\n", a);    
printf("a+1:%p\n", a+1);    
printf("=========================\n");    
printf("*a:%p\n", *a);
printf("*a+1:%p\n", *a+1);    
printf("=========================\n");    
printf("a[0]:%p\n", a[0]);    
printf("a[0]+1:%p\n", a[0]+1);    
printf("=========================\n");    
printf("a[1][2]:%d\n", a[1][2]);    
printf("*(a[1]+2):%d\n", *(a[1]+2));    
printf("*(*(a+1)+2):%d\n", *(*(a+1)+2));    
printf("*(p+1*3+2):%d\n", *(p+1*3+2));    
printf("*(*(q+1)+2):%d\n", *(*(q+1)+2));    
printf("*(q[1]+2):%d\n", *(q[1]+2));    
printf("q[1][2]:%d\n", q[1][2]);    return 0;}
=========================
&a[0][0]:0x7ffe91771790
&a[0][1]:0x7ffe91771794
&a[0][2]:0x7ffe91771798
&a[1][0]:0x7ffe9177179c
&a[1][1]:0x7ffe917717a0
&a[1][2]:0x7ffe917717a4
=========================
a:0x7ffe91771790
a+1:0x7ffe9177179c
=========================
*a:0x7ffe91771790
*a+1:0x7ffe91771794
=========================
a[0]:0x7ffe91771790
a[0]+1:0x7ffe91771794
=========================
a[1][2]:6
*(a[1]+2):6
*(*(a+1)+2):6
*(p+1*3+2):6
*(*(q+1)+2):6
*(q[1]+2):6
q[1][2]:6

二维数组传参数

char str[5][32] = {0};

int fun(char (*pstr)[32]);

指针数组传参数

char *pstr[3] = {”how are you“};

int fun(char **pstr);

指针函数和函数指针

1.指针函数

        指针函数是函数,函数返回值是指针

        不能返回局部变量的地址

2.函数指针

        指针指向函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值