导图社区 C语言指针
帮助新手多方面深入了解C语言指针,包括指针的概念、变量的指针与指针变量、指针与数组、指针与函数。
python学习资料、步长格式:序列名[起始值:终点值:步长] 步长一定要有规律,不写默认为1,终点值的下标为起始值下标加步长,也可以只写步长(表示取整个字符串)
坚持和发展中国特色社会主义的总任务:实现中华民族伟大复兴的中国梦、建成社会主义现代化强国的战略安排、建设社会主义现代化国家的战略导向建设社会主义现代化国家的战略导向
这是一篇关于市调大赛的思维导图,主要内容有组委会关注什么、选题选题思路步骤、常见的调研领域及研究思路、历年市调大赛国奖论文选题。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
C语言指针
指针的概念
变量和地址
酒店的房间,门牌号为px、py
让10住进px、让20住进py
px、py就是变量10和20的地址
x和y可以理解为具体的房间,房间的门牌号是px、py。变量10和20通过px、py两个门牌号找到房间住进x、y
指针变量和指针的类型
指针变量储存的内容是指针;定义指针变量时需要确定指针类型
变量的指针与指针变量
指针变量的定义与使用
指针变量的定义
数据类型 *指针名
指针变量的使用
取地址运算符:单目运算符&使用来取操作对象的地址
指针运算符*:与&为逆运算,作用是通过操作对象的地址,获取存储的内容
“&”和“*”的结合方向
&*都是右结合的
指针变量的初始化
在定义时可以赋值,如果赋值为0,此时0代表NULL的字符码值
指针运算
赋值运算
相互赋值
赋值某个变量的地址
赋值具体的地址
指针与整数的加减运算
指针变量的自增自减运算。指针+1/-1,表示指针向前向后移动一个单元
指针变量加上或减去一个整形数
关系运算
px>py表示px指向的存储地址是否大于py指向的地址
px==py表示px和py是否指向同一个存储单元
px==0和px!=0表示px是否为空指针
指针与数组
指向数组的指针
数组的首地址即为数组名,第一个元素的首地址也是数组的首地址
字符指针与字符数组
字符数组方式
char word[] = "zack"; printf("%s", word);
字符指针方式
指针方式操作字符串和数组操作字符串类似。定义的指针看做是字符数组的数组名
多级指针及指针数组
多级指针
指向指针变量的存储地址就被称为指针的指针,即二级指针。依次叠加,就形成了多级指针
*是右结合的,所以*pp 相当于*(*p)。在本次定义中,二级指针的变量名为 pp,而不是**p
数据类型 **二级指针名;
在初始化二级指针 ppi 时,不能直接 ppi = &&i,因为&i 获取的是一个具体的数值,而具体数字是没有指针的。
指针数组
数据类型 *数组名[指针数组长度];
指针与多维数组
多维数组的地址
int nums[2][2] = { {1, 2}, {2, 3} };
先是第一个维度,将数组当成一种数据类型 x,那么二维数组就可以当成一个元素为 x 的一维数组。
将数组看成数据类型 x,那么 nums 就有两个元素。nums[0]和 nums[1]。
取 nums[0]分析。将 nums[0]看做一个整体,作为一个名称可以用 x1 替换。则 x1[0]就是 nums[0][0],其值为 1。
多维数组的指针
定义一个二维数组 int nums[2][2] = { {1, 2}, {2, 3} }; //此时 nums[0]、和 nums[1]各为一个数组 int *p[2] = {nums[0], nums[1]}; //我们可以用指针数组 p 操作一个二维数组
指针与函数
函数参数为指针
void swap(int *x, int *y){ int t; t = *x; *x = *y; *y = t; }
函数的返回值为指针
数据类型 *函数名(参数列表){ 函数体 } //例如: int s; int *sum(int x, int y){ s = x + y; return &s; }
在函数调用前要声明需要对函数声明
指向函数的指针
数据类型 (*函数指针名)();
不同类型指针单元长度不同