嵌入式软件开发培训笔记——C高级 指针
2015-04-16 12:19
555 查看
由计算机系统组成及内存地址介绍引题进入基础指针学习
a)指针变量定义
char *pname; //编译器从右往左进行识别,pname存放的是另一对象的首地址,并且另一对象的数据类型必须为char型
指针变量初始化
int *p = 0x12345678;
b)指针变量赋值
int *p;
p = 0x12345678;
c)空针NULL
int *p = NULL; //当前指针变量未指向任何一个有效变量的地址
d)&取地址符
int i;
char j;
int *p = &i;
int *q = (int *)(&j); //强行指向char型变量
用强制类型转换
e)野指针
f)指针变量的+
-运算(+、-、++、--)
char *p; //sizeof(char、int、long)=(1、4、8)
p++; //p+sizeof(char)
p--; //p-sizeof(char)
g)两指针相减的运算
int *p1 = 100;
int *p2 = 104;
(p2 - p1) //(p2 - p1)/sizeof(int) = (104 - 100)/4 = 1
h)void型指针
void *i; //i指针可指向任何类型的对象
但在后续程序中使用该指针前应先对其类型进行强制转换
补充:判断num大于0或小于0或都等于0;
Num > 0; return 1;
Num < 0; return -1;
Num == 0; return 0;
等价下面三目运算嵌套用法
补充:标准main函数,argc为参数个数含./exe,argv[]为指向参数的指针数组。
int main(int argc, char *argv[]) 或 int
main(int argc, char **argv)
需接收整型数时可用atoi将argv[]指向的字符形参数转换成整形;
i)const限定符
const int *p1; //限定P1所指向的对象值不可通过P1来修改
int * const p2 = &i; //限定P2变量不能被改变
const int * const p3 = &j; //限定P3变量且限定p3指向的对象值不可通过P3来修改
a)指针变量定义
char *pname; //编译器从右往左进行识别,pname存放的是另一对象的首地址,并且另一对象的数据类型必须为char型
指针变量初始化
int *p = 0x12345678;
b)指针变量赋值
int *p;
p = 0x12345678;
c)空针NULL
int *p = NULL; //当前指针变量未指向任何一个有效变量的地址
d)&取地址符
int i;
char j;
int *p = &i;
int *q = (int *)(&j); //强行指向char型变量
用强制类型转换
e)野指针
f)指针变量的+
-运算(+、-、++、--)
char *p; //sizeof(char、int、long)=(1、4、8)
p++; //p+sizeof(char)
p--; //p-sizeof(char)
g)两指针相减的运算
int *p1 = 100;
int *p2 = 104;
(p2 - p1) //(p2 - p1)/sizeof(int) = (104 - 100)/4 = 1
h)void型指针
void *i; //i指针可指向任何类型的对象
但在后续程序中使用该指针前应先对其类型进行强制转换
补充:判断num大于0或小于0或都等于0;
Num > 0; return 1;
Num < 0; return -1;
Num == 0; return 0;
等价下面三目运算嵌套用法
补充:标准main函数,argc为参数个数含./exe,argv[]为指向参数的指针数组。
int main(int argc, char *argv[]) 或 int
main(int argc, char **argv)
需接收整型数时可用atoi将argv[]指向的字符形参数转换成整形;
i)const限定符
const int *p1; //限定P1所指向的对象值不可通过P1来修改
int * const p2 = &i; //限定P2变量不能被改变
const int * const p3 = &j; //限定P3变量且限定p3指向的对象值不可通过P3来修改
相关文章推荐
- 嵌入式软件开发培训笔记——C高级 指针和数组
- 嵌入式软件开发培训笔记——C高级 指针和函数
- 嵌入式软件开发培训笔记——C高级 存储类、链接和内存管理
- 嵌入式软件开发培训笔记——C高级 预处理&类型重定义
- 嵌入式软件开发培训笔记——C高级 开发环境
- 嵌入式软件开发培训笔记——C高级 数据结构与算法基础
- 嵌入式软件开发培训笔记——C高级 结构体与共用体
- 嵌入式软件开发培训笔记——java第四天(高级类特性——接口/多态/抽象类/内部类以及异常处理)
- 嵌入式软件开发培训笔记——linux文件系统
- 嵌入式软件开发培训笔记——交叉工具链的安装arm-cortex_a8-linux-gnueabi-
- 嵌入式软件开发培训笔记——linux操作系统扫盲
- 嵌入式软件开发培训笔记——基于S5PC100的课程设计
- 嵌入式软件开发培训笔记——u-boot-2011.09的移植
- 嵌入式软件开发培训笔记——Java第一天(开发环境搭建、入门引导)
- 嵌入式软件开发培训笔记——java第五天(API——math/string/集合/日期时间以及java线程)
- 嵌入式软件开发培训笔记——网络配置(详细NFS及TFTP配置)
- 嵌入式软件开发培训笔记——boot原理与u-boot 基于Cortex_A8核的S5PC100芯片
- 嵌入式软件开发培训笔记——Java第二天(运算符、程序结构、数组与继承)
- 嵌入式软件开发培训笔记——java第六天(IO、网络编程、反射与JNI)
- 嵌入式软件开发培训笔记——shell编程