一、指针
1、指针是一个变量,变量中存的是内存中的地址;
2、内存的特点:a:内存支持随机访问;
b:内存和外存的对比:a)内存访问速度快,外存访问速度慢;
b) 内存容量小于外存容量;
c)内存成本高于外存成本;
d) 断电后,内存中的东西会消失,但外存不会。
3、指针必须先申请才能使用,创建变量后操作系统就会给指针分配地址。
4、p 间接访问运算符/解运算符
int num = 10;
int p = #
printf("%d\n", p);
5、指针类型
int,char*,double*,float*,在64位编译器下,指针占4个字节;
指针变量涉及两个因素:指针对应的内存地址是哪个地址;这个内存地址对应的内存大小是多少。
6、空指针(非法内存,不能解引用)NULL,空指针地址为0.空指针是一种特殊的野指针。
7、野指针:指针指向了一个非法内存空间:a、指针未初始化;b、指针越界访问;c、指针指向的空间释放。
8、指针运算
a、指针±整数(指针+1相当于地址跳过一个元素的长度)
b、指针-指针(两个指针之间隔了几个元素)
c、关系运算(==,!=,(比较指针中存的地址是否一样)>,>=,<,<=)
9、二级指针:
int num=10;
int p=&num;
int* pp=&p;//二级指针中保存一级指针的地址,二级指针也是一个指针
10、指针数组是一个数组,数组中的每一个元素又是一个指针 int* arr[4]={0};
数组指针是一个指针,int (arr[4])=NULL;
11、const
int num = 10;
int num1 = 20;
const int p = #//限制根据指针修改地址对应的变量
int const p = #//限制根据指针修改地址对应的变量
int const p = #//限制根据修改指针的指向
*p = 100;
p = &num1;
printf("%d\n", p);
12、
int arr[] = { 1, 2, 3, 4 };
printf("%d\n", sizeof(arr)); // 16
printf("%d\n", sizeof(arr + 0)); // 4
printf("%d\n", sizeof(arr)); // 4
printf("%d\n", sizeof(arr + 1)); // 4
printf("%d\n", sizeof(&arr)); // 4 数组指针
printf("%d\n", sizeof(&arr)); // 16 数组指针解引用得到一个数组
printf("%d\n", sizeof(&arr)); // 4 针对 int 来 &, 得到 int
printf("%d\n", sizeof(&arr + 1)); // 4 数组指针 + 1 还是数组指针. 只要是指针, 32位系统下就是 4
printf("%d\n", sizeof(&arr[0] + 1)); // 4 int
C语言课堂总结
最新推荐文章于 2022-10-16 19:25:10 发布
本文主要介绍了C语言中的指针概念,包括指针作为变量存储内存地址、内存特点、指针的申请与使用、指针类型、空指针与野指针的区别、指针运算、二级指针、指针数组、const修饰指针以及数组指针相关的知识点。
135

被折叠的 条评论
为什么被折叠?



