C语言:指针3

1.指针数组和数组指针

int (*p)[10];  是数组指针,表示指向长度为10的一维数组;

int *p[10];  是指针数组,表示有10个指针的数组;

当一个指针数组作为实参传递时,对应的形参应该是指针的指针(指向指针地址的指针):**p;

给 **p传参时要穿地址,&s,如果是数组,传:&s[ i ]或s + i;

2.二维数组指针

int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};

int (*p)[4];

p = a;    ————此时指针p指向二维数组a的首元素地址,也就是第一行;

p + 1;    ————此时p + 1表示指针p所指的地址进入到了二维数组a的第二行;

二维数组指针在传参时,要求返回值一样,基类型一样;

*(a + i) <=> a[ i ] <=> &a[ i ][ 0 ]

*(a + i) + 1指向 a[ i ][ 1 ]的地址;

*(*(a + i) + 1)指的是a[ i ][ 1 ]的值;

a <=> &a[ 0 ];

a + 1 <=> &a[ 1 ];

例题:

int a[  ][ 4 ] = {1,2,3,4,5,6,7,8,9,10,11,12};

printf("%d\n", *((int *)(a + 3) - 5));

a + 3 加到了数组a的外面;

强转为 int *,此时再 - 5减的是 int 型,4个字节,就会从数组a的外面减到a[ 1 ][ 4 ];

最终输出打印结果为a[ 1 ][ 4 ]的值,为8;

3.函数指针

函数的函数名就是该函数的入口地址;

回调函数:

函数指针的作用是降低程序的耦合性;

4.字符串和指针

定义:char *string = "hello world";

字符串指针打印:

字符串指针互换:

字符串指针逆序:

字符串指针排序:

字符串指针二分查找法:

5.系统的快速排序法qsort

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值