学习笔记(24):C语言 从小白到大神: 入门篇-指针数组、指针的指针、main函数参数、小结...
立即学习:https://edu.csdn.net/course/play/8088/177054?utm_source=blogtoedu
1. 指向指针的指针
int **p;
*指针运算符,是从右到左结合的,所以相当于*(*p);括号里的*p是指针变量的定义形式。又在前面加了一个*,表示指针变量p是指向 一个 指针变量的,而*p 是p所指向的另一个指针变量;
int abc = 5;
int *pabc = &abc;
int **ppabc = &pabc;
printf("abc = %d\n",abc);
printf("abc = %d\n",*pabc);
printf("abc = %d\n",**ppabc); //*右结合性,三个打印出来的值都为5
2. 指针数组做main函数参数
3. 小结
(1)数据类型表
(2)指针运算小结
(2.1)指针变量加减
p++,p--:不是简单的加减1,而是将指针变量的地址和它所指向的变量所占用的内存字节数相加减。
(2.2)指针变量赋值;
int *p = 1000; //不可以不能直接赋数字,不要认为可以将地址1000赋给p。
只能将变量的已分配地址赋给指针变量;
int a;
int *p = &a;
(2.3)指针变量可以有空值,表示不指向任何变量;
p = NULL; //NULL其实是整数0,就是使p指向地址为0的单元,同时系统也会保证地址为0的这个单元不存放有效数据;有了这种赋值之后,在写程序时,就可以进行指针与NULL的比较;
if(p == NULL)
(3)void *型指针
指针变量定义的时候都会定义它指向某种数据类型;比如指向int的,我们定义int *p;
但void *是属于万能型指针变量,也就是能够指向任意数据类型;
int a = 3;
int *p = &a;
float bf = 5.6f;
float *pf = &bf;
//p = pf; //报错,不可以
//p = (int *)pf; //强制类型转换可,但如果p和pf所指向的数据类型int和float所占用的内存字节数不同,那么操作p就非常危险。
void *pwn = NULL;
pwn = p; //都不报错
pwn = pf; //都不报错
//将来你想使用pf的时候,你可以通过pwn转换回去
pf = (float *)pwn;//已知晓pf的类型
- 点赞
- 收藏
- 分享
- 文章举报
- C语言学习笔记22——数组参数和指针参数
- 学习笔记(28):C语言 从小白到大神: 入门篇-位的概念以及位运算符介绍
- 学习笔记(31):C语言 从小白到大神: 入门篇-将结构体写入二进制文件再读出
- 学习笔记(27):C语言 从小白到大神: 入门篇-共用体、枚举类型、typedef
- 学习笔记(25):C语言 从小白到大神: 入门篇-结构体变量定义、引用、初始化
- C语言学习笔记(20) 数组参数和指针参数分析
- 学习笔记---指针法访问数组、数组的实质、数组/指针作为函数参数
- C语言学习笔记之指向数组元素的指针和指向数组的指针
- C++学习笔记(三)--函数参数,数组函数,指针和const,二维数组函数,递归,函数指针
- C语言学习笔记.指针4--数组指针和指向数组的指针变量(一)
- 数组02 - 零基础入门学习C语言24
- C语言学习笔记(19) 多维数组和多维指针分析
- C语言提高-第23/24/25讲: 指针的运算/数组名作为函数参数/指针作函数参数(一维数组Vs指针)
- c语言学习笔记之数组小结
- C语言学习笔记(18) 指针数组和数组指针分析
- 【c语言学习笔记】指针数组和数组指针以及在做题的时候遇到的问题
- C语言学习笔记【指针04】指针数组与指向指针的指针 推荐
- C语言学习笔记(6)-如何从变量声明的表面上来区分指针数组和数组指针
- C语言深度剖析学习笔记-指针、数组、内存、函数
- C语言学习笔记17——数组与指针