【嵌入式学习历程6】 指针(1)
来源:互联网 发布:海贼王 居鲁士 知乎 编辑:程序博客网 时间:2024/05/22 15:48
1.什么是指针
定义一个变量,系统就为该变量分配一个内存,可以用来存放数字、字符等等,如果用来存放地址,那么这个变量就是指针
2.指针运算
(*p)++和*p++的区别
C编译器认为*和++是同优先级操作符,且都是从右至左结合的,所以*p++中的++只作用在p上,和*(p++)意思一样。
(*p)++是所指向的值加1;*p++则是一个地址,先求*p的值,然后p++,指向下一个元素。
3.指针和数组
1)数组的指针是数组的起始地址;数组元素的指针是数组元素的地址。
2)用指针引用数组元素
如果指针变量P已指向数组中的一个元素,则P+1指向下一个元素。
例如,P的初值是&a[0]则p+i和a+i都是a[i]的地址;*(p+i)和*(a+i)即为a[i].
4.指针与字符串
在C中有两种方法访问一个字符串
1)用字符数组存放一个字符串 char string[] = "I love China!"
2)用字符串指针指向一个字符串 char *string[] = {"I love China!"};printf("%s\n",*string);
注意:*string的值还是指针,*string[i]才是值。
5.指针和函数
1)函数指针:指向这个函数的指针 数据类型(*fun)(参数列表)
2)指针函数:返回值是指针的函数 数据类型 *fun(参数列表)
在C语言中,变量有它的地址,同理函数也有地址,那么把函数的地址赋给函数指针,再通过函数指针调用这个函数就可以了。
分析 int*(*(*fp)(int))[10]
右左法则:首先从变量名fp开始往右看,遇到反括弧,往左,遇到* ,说明fp是一个指针,再往右看,遇到(int) ,说明fp这个指针指向的是一个函数,而且函数的形参是一个int型,继续往右遇到反括弧,往左,遇到* ,说明这个函数的返回值是一个指针,往右看,遇到[10],说明返回的这个指针指向的是一个数组,而且这个数组有10个元素,最后往左看,是int * ,说明这个数组是返回值是int *型。
- 【嵌入式学习历程6】 指针(1)
- 【嵌入式学习历程5】 数组与函数(1)
- 嵌入式学习历程
- 嵌入式学习历程
- 嵌入式学习历程
- 嵌入式学习历程【1】 嵌入式系统的基础知识
- 菜鸟学习历程【6】关键字、指针
- 学习嵌入式软件的历程
- 嵌入式学习历程一点儿体会
- 【嵌入式学习历程14】Linux进程间通信(1)
- 【嵌入式学习历程16】Linux网络编程(TCP篇)
- 【嵌入式学习历程17】Linux网络编程(UDP篇)
- DM8148学习历程(1)
- Struts2 学习历程(1)
- 学习历程2016522(1)
- NodeJS学习历程(1)
- C++学习历程(1)
- ionic3学习历程(1)
- 有用的插件
- 皮尔逊相关系数 和 R^2
- Android自动化测试(二)
- Lightoj1120线段树扫描线【模板】
- Python :assert断言使用
- 【嵌入式学习历程6】 指针(1)
- 二叉树的构造与遍历
- Java集合(五)- HashTable详解
- ATOM 安装+配置炫酷的activate-power-mode..
- FFMPEG视音频编解码资料收集
- 算法分析设计与分析-蛮力法(3)--顺序查找
- python基础-生成包、导入模块、包下_init_模块(__all__方法)
- win server 安装oracle到12%出错
- TensorFlow实战4:实现简单的多层神经网络案例