C指针总结
来源:互联网 发布:java 线程join 编辑:程序博客网 时间:2024/06/05 10:26
1. 指针是C语言中一个重要的组成部分,使用指针编程有以下优点:
(1)提高程序的编译效率和执行速度。
(2)通过指针可使用主调函数和被调函数之间共享变量或数据结构,便于实现双向数据通讯。
(3)可以实现动态的存储分配。
(4)便于表示各种数据结构,编写高质量的程序。
2. 指针的运算
(1)取地址运算符&:求变量的地址
(2)取内容运算符*:表示指针所指的变量
(3)赋值运算
·把变量地址赋予指针变量
·同类型指针变量相互赋值
·把数组,字符串的首地址赋予指针变量
·把函数入口地址赋予指针变量
(4)加减运算
对指向数组,字符串的指针变量可以进行加减运算,如 p+n,p-n,p++,p--等。对指向同一数组
的两个指针变量可以相减。对指向其它类型的指针变量作加减运算是无意义的。
(5)关系运算
指向同一数组的两个指针变量之间可以进行大于、小于、 等于比较运算。指针可与 0 比较,
p==0 表示 p 为空指针。
3. 与指针有关的各种说明和意义见下表。
int *p;p 为指向整型量的指针变量
int *p[n];p 为指针数组,由 n 个指向整型量的指针元素组成。
int (*p)[n]; p 为指向整型二维数组的指针变量,二维数组的列数为 n
int *p()p 为返回指针值的函数,该指针指向整型量
int (*p)()p 为指向函数的指针,该函数返回整型量
int **pp 为一个指向另一指针的指针变量,该指针指向一个整型量。
4. 有关指针的说明很多是由指针,数组,函数说明组合而成的。
但并不是可以任意组合,例如数组不能由函数组成,即数组元素不能是一个函数;函数也不
能返回一个数组或返回另一个函数。例如
int a[5]();就是错误的。
5. 关于括号
在解释组合说明符时, 标识符右边的方括号和圆括号优先于标识符左边的“*”号,而方括号
和圆括号以相同的优先级从左到右结合。但可以用圆括号改变约定的结合顺序。
6. 阅读组合说明符的规则是“从里向外”。
从标识符开始,先看它右边有无方括号或园括号,如有则先作出解释,再看左边有无*号。 如
果在任何时候遇到了闭括号,则在继续之前必须用相同的规则处理括号内的内容。例如:
int*(*(*a)())[10]
7.上面给出了由内向外的阅读顺序,下面来解释它:
(1)标识符 a 被说明为;
(2)一个指针变量,它指向;
(3)一个函数,它返回;
(4)一个指针,该指针指向;
(5)一个有 10 个元素的数组,其类型为;
(6)指针型,它指向;
(7)int 型数据。
因此 a 是一个函数指针变量,该函数返回的一个指针值又指向一个指针数组,该指针数组的
元素指向整型量。
- C指针总结--指针运算
- c指针总结
- c语言指针总结
- C语言指针总结
- C 指针详细总结
- C语言指针总结
- C语言指针总结
- c 指针总结
- C语言指针总结
- C++Void*指针总结!
- C指针总结
- C指针总结
- C指针总结
- C/C++指针总结
- C语言指针总结
- C语言指针总结
- C指针-总结
- C语言指针总结
- NSArray
- 如何迅速秒杀掉海量数据处理面试题
- 深入char、varchar、text和nchar、nvarchar、ntext的区别详解
- 【Linux VI】 个人小结
- 单例模式的常见应用场景
- C指针总结
- Android 省市县 三级联动(android-wheel的使用)
- 读UNDO引发的db file sequential read
- 数据结构的单链表创建与输出
- Android开发笔记--基础篇(二)
- 网络编程
- Java 遍历文件夹 取出指定文件格式的文件
- 如何保存用户的列表排序
- 数据分析师面试常见的77个问题