【C语言-18】指针的进阶知识点
2019-05-28 17:22
162 查看
[code]时间呀!等等我~
目录:
- 字符指针
- 数组指针
- 指针数组
- 函数指针
- 数组传参和指针传参
- 函数指针数组
- 指向函数指针数组的指针
- 回调函数
1.字符指针
一种指针类型为字符指针char*
[code]int main() { char ch = 'w'; char *pc = &ch; *pc = 'w'; return 0; }
2.数组指针
上一节我们已经知道“指针数组”是数组了。那么现在的“数组指针”当然就是指针咯!
[code]int *p1[10]; int (*p2)[10]; int (*p)[10];//p先和*结合,说明p是一个指针变量,然后指向整形数据的指针 这里要注意:[]的优先级要高于*号的,所以必须要加上()来保证p先和*结合。
我们再来看一段代码吧:
[code]#include <stdio.h> int main(){ int arr[] = { 1, 2, 3, 4, 5, 6 }; printf(" arr= %p\n", arr);//取整个数组 printf("&arr= %p\n", &arr);//取数组里面的首元素 printf(" arr+1= %p\n", arr+1); printf("&arr+1= %p\n", &arr+1); system("pause"); return 0; }
运行结果:
上一节我们的【总结:以上结果可见数组名和数组首元素的地址是一样。数组名表示的是数组首元素的地址。】
但是看上面的代码结果发现:虽然&arr和arr值是一样的,但是意义不一样呐!
实际上:&arr表示的是数组的地址,而不是数组首元素的地址。数组的地址+1--->相当于跳过了整个数组的大小。
3.指针数组:
[code]int* arr1[10];//整形指针的数组 char *arr2[4];//一级字符指针的数组 char **arr3[5];//二级字符指针的数组
4.函数指针
函数指针也可以解引用,得到的不是一个数据,而是一个函数。
我们来阅读两段有趣的代码:
[code]//代码1 (*(void (*)())0)(); //代码2 void (*signal(int,void(*)(int)))(int);
代码2太复杂,来简化一下:
[code]typedef void(*pfun_t)(int); pfun_t signal(int,pfun_t);
以上的代码我们下一次详细讲解吧!~期待~
5指针和数组笔试题总结:
- sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。
- &+数组名,这里的数组名表示的是整个数组,取出的时候整个数组的地址。
- 除此之外所有的数组名都表示首元素的地址。
~bye~
相关文章推荐
- C语言高手进阶知识点
- C语言学习笔记(18) 指针数组和数组指针分析
- C语言进阶-第15~16讲:结构体(含指针和函数)
- C语言指针与数组知识点
- c语言学习之基础知识点介绍(十四):指针的进阶
- C语言及程序设计进阶例程-15 指向结构体的指针
- C语言及程序设计进阶例程-16 当结构体成员为指针
- [C语言]进阶|指针与字符串
- C语言的一些知识点,主要是指针的一些知识
- C语言 ---- 指针 iOS学习-----细碎知识点总结
- C语言指针进阶(1)
- 【笔试面试知识点查缺补漏深入理解之C与C++篇】C语言中的指针数组与数组指针
- C语言及程序设计进阶例程-18 链表中结点的插入和删除
- C语言06指针进阶
- C语言进阶(牟海军)C 语言指针理解 续(2)
- 「C语言回顾之旅」第二篇:指针详解进阶
- c语言之指针与数组知识点随笔
- C语言进阶(牟海军)C 语言指针理解
- 程序员——C语言之指针 易错知识点
- C语言最难知识点——指针