C语言中关于数组指针与指针数组,二维指针二维数组、函数指针的总结
C语言中关于数组指针与指针数组,二维指针二维数组、函数指针的总结
知识点
数组指针与指针数组, 二维指针与二维数组、 函数指针
敲黑板先看这里
你觉不觉得C语言基础知识概念在头脑里没有形成知识体系?是否比较模糊比较乱?这就对了?我之前也是,有些知识点时间长了容易忘或者混淆,有些初学者抓不住重点觉得C语言复杂,难!实不相瞒,我也是这样的感受,于是我想是时候整体的把C语言给好好的总结一下了,这样形成一个知识体系,就不容易忘,也不容易混淆,这就是这次总结的意义所在。
分为几个板块总结:数据类型、指针与数组、字符串、多维指针与多维数组、函数、内存分配与操作问题、符号总结、控制语句、以及编译方面的问题。
总结宗旨:绝不专牛角尖!主要围绕常用应用知识为主,突出重点,能够很好的形成知识架构。比如:总结了float一般就不会再总结double,这样做没有多大意义,相反的,把重要的拿出来好好分析一下,是很有意义的,而相似的东西就可以举一反三了。实际上就这些知识点,概念搞明白后,C语言就通透多了
注意:如果指针没有搞清楚,请先看我的关于指针与数组的总结那篇。
数组指针与指针数组
1.数组指针是指针、数组类型的指针、指向一个数组的指针!可以通过数组类型定义数组指针:
AraayType* pointer; 也可以直接定义:type(*pointer)
;(其中:pointer为数组指针变量名,type为指向的数组的元素类型,n为指向的数组的大小)。
2.数组有自己的特定类型,数组的类型由元素类型和数组大小共同决定;例:
int array[5]的类型为int[5];
可以通过typedef为数组类型重命名:typedef type(name)[size]
数组类型: typedef int(AINT5)[5]; typedef float(AFLOAT10)[10];
数组定义: AINT5 iArray; AFLOAT10 fArray;
3.指针数组是数组、一个普通数组、数组中保存的每个元素是指针。type* pArray
;
二维指针与二维数组
1.指针的本质是变量,既然是变量那么肯定会占用一定的内存空间,指针变量是保存地址值的,那么指针的指针就是保存指针变量的地址值的。
为什么需要指向指针的指针?,因为指针在本质上也是变量,既然是变量,
那就存在传值调用和传地址调用,这就是指针的指针存在的意义。比如重置动态空间的大小,需要传指针的地址来改变。
2.二维数组在内存中以一维的方式排布,其中第一维是一维数组,第二维才是具体的值,数组名 可以看作常量指针;一维数组名代表数组首元素的地址,如:
int a[5]; a的类型为int*; 那么二维数组名同样代表数组首元素的地址,如: int m[2][5]; m的类型为int(*)[5];
3.二维数组可以看作是一维数组,数组名可以看作是指向数组的常量指针;数组中的每个元素都 是同类型的一维数组。C语言中只支持一维数组,数组的大小必须在编译期就作为常数确定,数组的元素可以是任何类型的数据,二维数组中的数组元素就是另一个数组。
函数指针
1.函数指针是指针、指向函数的指针,函数名是执行函数体的入口地址,可以通过函数类型定义函数指针:
FuncType* pointer;也可以直接定义:type(*pointer)(参数列表);
其中:pointer为函数指针变量名,type为所指函数返回值类型。
2.函数有自己特定的类型,函数的类型由返回值、参数类型和参数个数共同决定。如:
int add(int i, int i)类型为int(int,int); 可以通过typedef为函数类型重命名:
typedef type name(参数列表); 例: typedef int f(int, int); typedef void p(int);
3.回调函数是利用函数指针实现的一种调用机制,函数指针是实现回调机制的关键技术;
回调机制原理:
调用者不知道具体事件发生时需要调用的具体函数;
被调函数不知道何时被调用,只只读需要完成的任务;
当具体事件发生时,调用者通过函数指针调用具体函数;
回调机制中的调用者和被调函数互不依赖!
总结
以上总结以C语言知识框架为主线,着重强调实际经常应用!反复浏览体会可牢记,形成自己的知识框架,然后灵活应用,知识点来源于狄泰软件学习总结所得。
- C语言指针系列 - 一级指针.一维数组,二级指针,二维数组,指针数组,数组指针,函数指针,指针函数
- C语言指针系列 - 一级指针.一维数组,二级指针,二维数组,指针数组,数组指针,函数指针,指针函数
- C语言中二维数组、二维指针、指向指针的数组、指向数组的指针
- C语言中关于数组、指针以及函数的一些基本知识
- 第十章 数组和指针(函数和二维数组,本章个人总结)总结 140520
- 指针数组、数组指针、函数指针、指针函数总结
- C中关于一位数组与指针和二维数组与指针的一点总结
- 关于C语言声明、指针、数组、函数、typedef等等的一通“超级扯”
- C语言中的指针(指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针)
- 一道关于二维数组和指针数组的C语言笔试题目
- C语言指针,数组,函数总结
- 关于指针数组、数组指针、及函数指针和指向函数指针数组的指针的一点理解
- 指针数组、数组指针、函数指针、指针函数总结C++
- C语言中你不知道的事(3)-- 函数指针、指针数组及数组指针
- C语言:浅析指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针
- 关于二维数组和二维指针的理解总结
- C语言学习8:malloc返回的void*类型指针不可以做更改,free双重释放,二维数组的初始化和打印,a和a[0]和a[0][0]的区别,数组指针(*p)[3],指针数组*a[10],动态内存分配版约瑟夫环,动态分配版去空格和逗号处理,二级指针与二维数组互用
- 用C语言关于学生管理系统的几种实现方法(一位数组,二维数组,指针,结构体)
- 定义一个二维数组,写函数来实现对该二维数组求最大值。(要求,用行指针为函数形参)
- C++ 指针 数组指针 二维数组与指针 直接解释底层 各种指针(字符指针,函数指针,数组指针)解释