特殊指针的学习

  • 指向数组的指针

int * p[ 10 ]定义了10个野指针;(指针数组)

int (* p) [ 10 ]定义了一个指向长度为10的数组的指针;sizeof( p ) = 8;

要区分两个概念

&a[ 0 ] 是数组首元素地址;

&a 是整个数组的首地址,二者在数值上相等,但意义不同;

关于二维数组的指针

*(a + i) çè a[ i ] çè&a[ i ][ 0 ] (属于int * 型)

*(*(a + 0) + 1)çè a[ 0 ][ 1 ]

a[ i ][ j ] çè *( * (a + i) + j)

  • 指向函数的指针

int (* pfn)( int a, int b);

pfn = add;

注意此处的函数名即为该函数的入口地址;

使用指针的目的是为了间接访问

此处的*pfn即为add本身自己

目的:为了降低函数的耦合性;

回调函数

回调函数是一种特殊的函数,它作为参数传递给另一个函数,并在被调用函数执行完毕后被调用。

  • 指向指针的指针:二级指针

Char **p

要修改变量的值需要给被调函数中传递该变量的地址;

Char ** s == char * s[  ]

  • 指针数组作main函数的形参

argc和argv 就是main函数的形参;

main函数是由操作系统调用的;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值