十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
*的结合优先级低于( )和 [ ]
arr先和[ ]结合,说明arr是数组
arr和*结合,说明a是一个指针
int* arr[4] | 指针数组 | 数组的元素类型int* |
---|---|---|
int** arr[5] | 指针数组 | 数组的元素类型int** |
int(*arr)[10] | 数组指针 | 指向有10个元素,元素类型为int的数组 |
一维数组指针的使用
二维数组指针的使用
- 数组指针用于二维数组传参
二维数组的数组名也表示首元素的地址
二维数组的首元素是:第一行
采用数组传参,列不能省略,列表示每一行有几个元素
函数函数的地址就是函数名
int* fun(int ) | 指针函数 | 该函数参数是int,返回值是int |
---|---|---|
int (*fun)(int) | 函数指针 | 指针指向,参数是int返回值是int的函数 |
int (*fun[5])(int *) | 函数指针数组 | 数组fun有5个元素,类型为指针;指向参数为int*返回值值为int的函数 |
回调函数通过函数指针调用函数
通过函数A通过函数指针调用函数B
将函数B的地址作为参数传递给A函数,被调的函数就是回调函数
int (*fun[5])(int *)
- fun先与[ ]结合,说明fun是一个有5个元素的数组
再向右遇见了括号后向左- 每个元素类型是指针
再次遇见括号,并跳出该括号后向右- 指针指向函数,该函数的有一个指针参数和一个整型返回值。
星号外的就是指向
复杂指针分析调用地址为0的函数,但0不能当做一个地址,所以将0强转为void(*)()类型的函数
(* ( void(*)() ) 0 ) ( )
strlen&sizeof和数组名0是一个整数,先强转成函数的地址,(对函数的地址解引用就是函数)再解引用变成了函数,再加括号调用该函数
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧