指针运算、指针函数、函数指针、结构体指针以及枚举的介绍
2015-10-27 23:06
218 查看
指针运算:
1.指针与整数的运算:
a.指针与整数的运算只能加减,不能乘除取余
b.指针与整数的运算得到的结果还是指针(地址)
公式: 指针 + n = 指针 + n * 指向的类型所占的字节数
指针 - n = 指针 - n * 指向的类型所占的字节数
如果有一个int类型指针p,地址为0x11,那么p + 2得到的结果0x19
作用:遍历数组
int nums[] = {10,21,13};
//正序
int *p = &nums[0];
for (int i=0; i<3; i++) {
*(p+i);
}
//逆序
p = &nums[2];
for (int i=0; i<3; i++) {
*(p-i);
}
2.指针与指针的运算:
a.指针与指针的运算只能做减法,不能加、乘、除、取余
b.指针与指针的运算得到的结果是long
c.指针与指针的减法只能是同类型之间运算
公式: 指针 - 指针 = (指针存的地址 - 指针存的地址) / 指向的类型所占的字节数
作用:算出两个元素之间相差几个位置
指针函数:
就是指针的函数,本质上是一个函数。它是一个返回值类型是指针的函数
语法: 类型* 函数名(参数列表){
函数体;
}
C语言中只能返回字符串常量、全局变量以及静态变量
函数指针:
就是函数的指针,本质上是一个指针。它是一个指向函数的指针。
函数指针可以认为就是函数名;
语法: 返回值类型 (*指针变量名)(参数列表);
赋值:
指针变量名 = 函数名;
例:
void (*pTest)();
pTest = test; //pTest是指针变量名,test是函数名,函数名就是一个地址
请注意!这里的test没有括号,如果加了括号test()就等于是执行了这个函数 而不是将该函数赋给指针变量名了。
枚举:
定义语法:
enum 枚举名{
枚举项1,
枚举项2,
…………
枚举项n
};
注意:1.枚举本质是整数
2.枚举项不能重名
3.枚举值默认从0开始,依次递增
4.枚举值可以重复,并且也可以手动改变原来的默认值,改完后它后面的也依次递增
结构体指针:
声明语法:
struct 结构体名 * 指针变量名;
赋值:
指针变量名 = &结构体变量;
例: struct Person *ppt; //结构体指针
struct Person p; //结构体变量
ppt = &p;
1.指针与整数的运算:
a.指针与整数的运算只能加减,不能乘除取余
b.指针与整数的运算得到的结果还是指针(地址)
公式: 指针 + n = 指针 + n * 指向的类型所占的字节数
指针 - n = 指针 - n * 指向的类型所占的字节数
如果有一个int类型指针p,地址为0x11,那么p + 2得到的结果0x19
作用:遍历数组
int nums[] = {10,21,13};
//正序
int *p = &nums[0];
for (int i=0; i<3; i++) {
*(p+i);
}
//逆序
p = &nums[2];
for (int i=0; i<3; i++) {
*(p-i);
}
2.指针与指针的运算:
a.指针与指针的运算只能做减法,不能加、乘、除、取余
b.指针与指针的运算得到的结果是long
c.指针与指针的减法只能是同类型之间运算
公式: 指针 - 指针 = (指针存的地址 - 指针存的地址) / 指向的类型所占的字节数
作用:算出两个元素之间相差几个位置
指针函数:
就是指针的函数,本质上是一个函数。它是一个返回值类型是指针的函数
语法: 类型* 函数名(参数列表){
函数体;
}
C语言中只能返回字符串常量、全局变量以及静态变量
函数指针:
就是函数的指针,本质上是一个指针。它是一个指向函数的指针。
函数指针可以认为就是函数名;
语法: 返回值类型 (*指针变量名)(参数列表);
赋值:
指针变量名 = 函数名;
例:
void (*pTest)();
pTest = test; //pTest是指针变量名,test是函数名,函数名就是一个地址
请注意!这里的test没有括号,如果加了括号test()就等于是执行了这个函数 而不是将该函数赋给指针变量名了。
枚举:
定义语法:
enum 枚举名{
枚举项1,
枚举项2,
…………
枚举项n
};
注意:1.枚举本质是整数
2.枚举项不能重名
3.枚举值默认从0开始,依次递增
4.枚举值可以重复,并且也可以手动改变原来的默认值,改完后它后面的也依次递增
结构体指针:
声明语法:
struct 结构体名 * 指针变量名;
赋值:
指针变量名 = &结构体变量;
例: struct Person *ppt; //结构体指针
struct Person p; //结构体变量
ppt = &p;
相关文章推荐
- 编写内核模块输出代码段的地址空间
- fs4412开发板学习笔记(二)
- 使用EditText的addTextChangedListener(new TextWatcher())方法
- 乐观锁和悲观锁的区别
- 第二百零八天 how can I 坚持
- 作业六
- 博弈论-囚徒困境与重复囚徒困境的启示
- 关于Android编译中使用的Target Sdk Version,Min Sdk Version和Compile Sdk Version的含义
- Java-Spring-WebService最基础的配置示例
- Java-Spring-WebService最基础的配置示例
- Java-Spring-WebService最基础的配置示例
- 信号和 TIME_WAIT 对大并发服务器的影响
- Apache rotatelogs命令
- java内存分配和String类型的深度解析
- like语句‘%%'
- ubuntu下自动打开多终端的多个标签并执行不同脚本的方法
- Java:集合for高级循环遍历
- 掌握了学习方法才能学到更多知识
- HDU-1029 Ignatius and the Princess IV
- 链表不具备的特点