【C语言】指针是一个变量
2015-06-15 21:52
225 查看
1)指针是一个变量,是用来存放地址的变量,占有内存空间,用来保存内存地址;
2)在指针声明时,*号表示所声明的变量为指针
在指针使用时,*号表示操作 “指针所指向的内存空间中的值”;
*p相当于通过地址找到一块内存,然后操作内存;
*p放在等号左边赋值(给内存赋值);
*p放在等号右边取值(从内存获取值);
3)指针变量和它所指向的内存块是两个不同的概念
含义1:给p赋值p=0x1111;只会改变指针变量值,不会改变所指向的内容;
含义2:给*p赋值*p='a';不会改变指针变量的值,只会改变所指向的内存块的值;
含义3:等号左边*p表示给内存赋值;等号右边*p表示取值;
4)指针是一种数据类型,是指它的内存空间的数据类型
含义1:指针步长(p++),根据所指向内存空间的数据类型确定
C语言规定:要释放内存必须从内存首地址开始释放
free(p)是释放p所指向的内存空间的内容,而指针变量p中的值还是存在的,需要把p指向NULL,防止产生野指针
2)在指针声明时,*号表示所声明的变量为指针
在指针使用时,*号表示操作 “指针所指向的内存空间中的值”;
*p相当于通过地址找到一块内存,然后操作内存;
*p放在等号左边赋值(给内存赋值);
*p放在等号右边取值(从内存获取值);
3)指针变量和它所指向的内存块是两个不同的概念
含义1:给p赋值p=0x1111;只会改变指针变量值,不会改变所指向的内容;
含义2:给*p赋值*p='a';不会改变指针变量的值,只会改变所指向的内存块的值;
含义3:等号左边*p表示给内存赋值;等号右边*p表示取值;
4)指针是一种数据类型,是指它的内存空间的数据类型
含义1:指针步长(p++),根据所指向内存空间的数据类型确定
C语言规定:要释放内存必须从内存首地址开始释放
指针变量和它所指向的内存空间是两个不同的概念
char *p = NULL; p = (char *)malloc(100); if (!p == NULL) { free(p); p = NULL; }
free(p)是释放p所指向的内存空间的内容,而指针变量p中的值还是存在的,需要把p指向NULL,防止产生野指针
相关文章推荐
- C++中const与指针、引用的分析
- hdu 1033 (bit masking, utilization of switch, '\0' as end of c string)
- C和C++程序员面试秘籍
- C++温习-标准库-map
- Microsoft Visual c++ 各版本之间关系
- c++11 对容器进行排序
- 15周《C++语言基础》程序阅读——二进制文件及文件的随机读写(1)
- 读入一行由空格隔开的数字
- c语言的字符串拷贝函数的精简
- 用C++ 4000 实现Base64编码解码
- 【高级算法】Lasvegas+回溯算法解决3SAT问题(C++实现)
- 显示调用基类构造函数,迟绑定,VC++编译链接过程
- 关于fclose报错问题
- C++ 深拷贝和浅拷贝
- 《C++ 程序设计300例》
- C语言中的常用变量
- C++中的friend友元函数详细解析
- 并查集的简介及其C/C++代码的实现(某公司招聘笔试试题)
- 使用C语言操作DSP的寄存器
- 位图加载