1.函数
void (*p)();
函数指针;相当于函数变量,可以将函数引用赋值给它,赋值时候不调用
void *p(){}
指针函数;返回值是指针的函数,返回用* ,引用用&
2.内存原理
c语言内存比较简单; 分运行时的栈,堆 和编译时的bss,数据段,代码段,
因为C语音没有虚拟机是直接编译成汇编语言
3.指针数组与数组指针
数组是内存中连续的一段数据集合
可以用指针操作数组,默认指向数组的第一个位置 可以通过+1移位操作数组中下一个位置的数据
int *p[3];
指针数组指的是存放指针的数组,存放的只能是指针
int a[3][4];
int (*p)[4];
p=a; //相当于p=a[0]或者是p=a[0][0]
p++;//相当于a[0][ ]移位到a[1][ ]
数组指针类似于二维数组
4.结构体和共同体
struct Student{
}s1,s2;
main(){
s1.xxxx;
}
或者
struct Student{
};
main(){
struct Student student;
student.xxxx;
}
类似于java类,长度是最大变量和变量数目的相乘,目的是为了保证内存对齐
union:在一段代码段内,只能有一个变量值,声明的变量共用一个内存地址,所以长度等于占字节最多的声明变量
5.动态库与静态库
so/all和a/lib文件
区别在于运行时和编译时,
动态库需要通过system.loadLibrary()加载文件,静态库不需要,编译时已经完成了文件的load,但是文件较大
网友评论