标准C语言关键知识回顾
来源:互联网 发布:linux 分页 0.11 编辑:程序博客网 时间:2024/04/27 14:22
指针的长度
1. 如果系统是32位则,指针变量为4个字节;如果系统是64位系统,指针变量为8个字节。
2. 指针常量和常量指针的区别:
2.1 指针常量 int const * p; 指向的地址可变,其指向地址的内容不可变。const int *p等价
``` 例子: int a = 10; int b = 11; int const *p = &a; p = &b; //指向的地址可变 *p = 99 ; //错误,其指向地址的内容不可变 ```
2.2 常量指针 int * const p; 指向地址不可变,但指向地址的内容可变。
``` 例子: int a = 10; int b = 11; int *const p = &a; p = &b;//错误,指向地址不可变 *p = 88;//指向地址的内容可变。 ```
3. 动态内存分配——堆的申请:
3.1 malloc(n * sizeof(int))
请求n个连续的、每个长度是一个int大小的空间,如果创建成功,返回这些空间的地址;如果创建失败,返回 0;
3.2 calloc(n, sizeof(int))
请求n个连续的、每个长度是一个int大小的空间,如果创建成功,返回这些空间的地址;如果创建失败,返回 0. 和 malloc() 的区别在于, calloc() 会自动把空间初始化为 0;
3.3 realloc(p, sizeof(int) * n)
给一个已经分配了地址的指针p重新分配空间,参数p 是原来的空间首地址,sizeof(int) * n 是重新申请地址长度 主要用于原来的空间大小的不够啦,要重新分配。
4. 指针配合堆的使用注意事项
4.1 指针要指向一块内存地址
``` char * p; strcpy(p,"aaaa");//错误,因为p未指向一块内存地址 char *kk = malloc(10); strcpy(p,"aaaa");//正确 ```
4.2 使用指针时,读操作,只把地址传过去就可以解决;但是写操作,需要让指针指向一块可写的内存,除去常量区,可参考4.1
``` char *p = "abdfdsafasdf"; printf("%s",p); ```
5. static 变量:
5.1 局部静态变量: 就在函数中定义,生命周期是整个源程序,但是作用域和自动变量没区别,都是只能在定义该变量的函数范围内使用,退出该函数后,尽管这个变量还在,但是已经不能使用。
5.2 全局静态变量: 全局变量本身就是静态存储的,静态全局变量也是静态存储方式,但是有区别:
5.2.1 非静态全局变量:变量的作用域是整个源程序,但是其他源文件也可以使用,
5.2.2. 静态全局变量:会限制作用域范围,只能在定义该变量的源文件内有效,在其他源文件内不能使用。
5.3 static 函数(也叫 内部函数):
只能被本文件中的函数调用,不能被同意源程序的其他文件中的函数调用,区别一般的非静态函数(外部函数),
0 0
- 标准C语言关键知识回顾
- C语言深度解剖 关键知识总结
- (WIP)C语言知识回顾(by quqi99)
- 回顾C语言文件里的知识
- c语言学习中遇到的几个关键知识
- 【C++】知识回顾1
- [C#] C# 知识回顾
- [C#] C# 知识回顾
- [C#] C# 知识回顾
- [C#] C# 知识回顾
- 【C/C++】知识回顾2
- C语言关键---static
- C语言关键---sizeof
- C语言回顾
- C语言回顾
- c语言基础知识回顾
- C语言回顾
- C语言指针回顾
- JS数据类型(一)
- position定位属性中absolute和relative的区别
- 图片缩放库 Photoview 和 Gif 控件 GifView 的使用
- JAVA动态规划(三)--最长回文字符串(可删除中间字符)【腾讯2016实习生笔试题】
- C++ 析构函数
- 标准C语言关键知识回顾
- 香蕉好处多 但吃香蕉要注意这些禁忌!
- Caffe源码解析4: Data_layer
- Android activity四大启动模式详解
- 安装MySQL时停在start server解决办法
- Ubuntu和XP之间实现共享
- 【Android】如何用MediaPlayer实现一个简单的音视频播放器
- Linux驱动开发-11、设备阻塞访问-等待队列
- Android ContentObserver