指针的高阶用法

例题:

比较的是p1,p2的地址,输出结果为yes ,处于字符串常量区,相同字符串只存一个

指针数组和数组指针

指针数组,8个野指针, 80bit

数组指针,指向数组的指针,指向整个数组,上式只能指向长度为10的一维整型数组, 是连续的40字节的首地址,8bit

引用数组元素可以用下标法(如a[3]),也可以用指针法,即通过指向数组元素的指针找到所需的元素。使用指针法能使目标程序质量高(占内存少,运行速度快)。

向后偏移 n *sizeof基类型

二维数组指针

 
1.*(a+i)+j;//代表了第i行j个元素的地址

函数的指针

可以用指针变量指向整型变量、字符串、数组,也可以指向一个函数。一个函数在编译时被分配给一个入口地址。这个函数的入口地址就称为函数的指针。可以用一个指针变量指向函数,然后通过该指针变量调用此函数。函数指针的出现就是为了降低函数的耦合性。

赋值语句“pfn = add”的作用是将函数add的入口地址赋给指针变量pfn。和数组名代表数组首元素地址类似,函数名代表该函数的入口地址。这时,pfn就是指向函数add的指针变量,此时pfn和add都指向函数的开头,调用*pfn就是调用add函数。请注意pfn是指向函数的指针变量,它只能指向函数的入口处而不可能指向函数中间的某一条指令处,因此不能用*(pfn+1)来表示函数的下一条指令。

函数的形参可被忽略 ,* 说明pfn为指针

剩下的部分为指针的基类型,返回值必须为与基类型相同

回调函数:可以在函数中调用函数,降低程序耦合性,以应对不同需求。

用库函数实现快速排序

指向指针的指针

例:

 

程序崩溃在strcpy,s是一个野指针。

修改后:*说明p为指针 char * 为p的基类型

当指针数组作为函数参数传递时,形参是指向指针的指针。

字符串逆序【修改的是指针的指向】

指针数组

指针数组比较适合用来指向若干个字符串,使字符串处理更加方便灵活。

可以分别定义一些字符串,然后用指针数组中的元素分别指向各字符串,在 s[0] 中存放字符串 " china"的首字符的地址。s[1] 中存放字符串 " great " 的首字符的地址……如果想对字符串排序,不必改动字符串的位置,只须改动指针数组中各元素的指向(即改变各元素的值,这些值是各字符串的首地址)。而字符串在字符串常量区,无法改变,可通过移动指针变量指向来进行比较查找排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值