C语言复杂表达式,指针高级运用
来源:互联网 发布:用友nc java插件下载 编辑:程序博客网 时间:2024/05/29 03:21
1
指针数组是数组
数组指针是指针:指针指向的是一个数组。
分析:
int *p[5];
int (*p)[5];
int *(p[5]);//和第一个是一样的,小括号是多余的,用了也没错。
第一步找核心:定义的符号是谁
第二步找结合:如果核心和*结合,表示指针;如果核心和【】结合,表示数组;如果核心和()结合,表示是函数。
第三步向外扩展:找到核心后,从内到外逐层的进行结合
2函数指针:
函数指针本质是指针,本身还是占4字节,所有指针都是4字节。
函数本质是一段在内存中连续分布的代码,C语言用函数名来表示函数首地址
C语言是强类型语言(每个变量都有自己的变量类型),编译器可以帮我们做严格的类型检查。
函数名与数组名最大区别:函数名做右值时加不加&效果和意义都是一样的;但是数组名是有区别的
3
struct student{
int age;
char name[20];
};//此时定义了一个类型,不耗内存。
struct student s1; //此时定义了一个结构体变量,需要分配内存。
typedef struct student{
int age;
char name[20];
}student; //此时定义了两个相同类型,但是不同名字的类型。一个是struct student;一个是student.
注意: typedef int *PTNT; const PTNT p2; 相当于是int *const p2;
typedef int *PTNT; PTNT const p2; 相当于是int *const p2;
4二重指针:
二重指针与一重指针没有本质区别,都是指针变量,都占4个字节。
char **p1;
char *p2;
char a;
p2=&a;
p1=&(&a);//报错:因为&a是一个常量,不能对常量再使用&;
p1=&p2;//没错:因为p2是一个char *指针变量,可以使用&;
二重指针指向一重指针的地址;
指针数组是数组
数组指针是指针:指针指向的是一个数组。
分析:
int *p[5];
int (*p)[5];
int *(p[5]);//和第一个是一样的,小括号是多余的,用了也没错。
第一步找核心:定义的符号是谁
第二步找结合:如果核心和*结合,表示指针;如果核心和【】结合,表示数组;如果核心和()结合,表示是函数。
第三步向外扩展:找到核心后,从内到外逐层的进行结合
2函数指针:
函数指针本质是指针,本身还是占4字节,所有指针都是4字节。
函数本质是一段在内存中连续分布的代码,C语言用函数名来表示函数首地址
C语言是强类型语言(每个变量都有自己的变量类型),编译器可以帮我们做严格的类型检查。
函数名与数组名最大区别:函数名做右值时加不加&效果和意义都是一样的;但是数组名是有区别的
3
struct student{
int age;
char name[20];
};//此时定义了一个类型,不耗内存。
struct student s1; //此时定义了一个结构体变量,需要分配内存。
typedef struct student{
int age;
char name[20];
}student; //此时定义了两个相同类型,但是不同名字的类型。一个是struct student;一个是student.
注意: typedef int *PTNT; const PTNT p2; 相当于是int *const p2;
typedef int *PTNT; PTNT const p2; 相当于是int *const p2;
4二重指针:
二重指针与一重指针没有本质区别,都是指针变量,都占4个字节。
char **p1;
char *p2;
char a;
p2=&a;
p1=&(&a);//报错:因为&a是一个常量,不能对常量再使用&;
p1=&p2;//没错:因为p2是一个char *指针变量,可以使用&;
二重指针指向一重指针的地址;
0 0
- C语言复杂表达式,指针高级运用
- C语言复杂表达式和指针高级应用
- C语言系列--复杂表达式与指针高级应用
- 4.4.C语言复杂表达式和指针高级应用
- C语言专题精讲篇_4.4.语言复杂表达式与指针高级应用
- C语言基础知识之(二十):指针高级运用
- c语言-高级指针
- C语言--高级指针
- C语言高级指针
- 复杂表达式解释器 c语言复杂指针定义在线解释 正则在线解释
- C语言复杂指针理解
- C语言复杂指针说明
- C语言之高级指针
- C语言_高级指针
- c语言:高级指针话题
- C语言09 -- 高级指针
- C语言中的高级指针
- C语言之指针高级
- 深度学习入门思考
- 石子归并
- springmvc 静态资源访问
- 几个php算法题-----其中有的还没搞明白
- define
- C语言复杂表达式,指针高级运用
- C++代码学习
- docker自学笔记(0)——基本概念
- Java并发编程(Java Concurrency)(13)- Java volatile 关键字(Java Volatile Keyword)
- Surprising Strings poj 3096 map的运用
- 关于File.separator 文件路
- vim 编辑器常用指令
- 算法竞赛入门经典第二版 4 - 2
- Resilient Distributed Datasets: A Fault-Tolerant Abstraction forIn-Memory Cluster Computing