标签:
1)指针是一个变量,是用来存放地址的变量,占有内存空间,用来保存内存地址;
2)在指针声明时,*号表示所声明的变量为指针
在指针使用时,*号表示操作 “指针所指向的内存空间中的值”;
*p相当于通过地址找到一块内存,然后操作内存;
*p放在等号左边赋值(给内存赋值);
*p放在等号右边取值(从内存获取值);
3)指针变量和它所指向的内存块是两个不同的概念
含义1:给p赋值p=0x1111;只会改变指针变量值,不会改变所指向的内容;
含义2:给*p赋值*p=‘a‘;不会改变指针变量的值,只会改变所指向的内存块的值;
含义3:等号左边*p表示给内存赋值;等号右边*p表示取值;
4)指针是一种数据类型,是指它的内存空间的数据类型
含义1:指针步长(p++),根据所指向内存空间的数据类型确定
C语言规定:要释放内存必须从内存首地址开始释放
1 char *p = NULL; 2 p = (char *)malloc(100); 3 4 if (!p == NULL) 5 { 6 free(p); 7 p = NULL; 8 }
free(p)是释放p所指向的内存空间的内容,而指针变量p中的值还是存在的,需要把p指向NULL,防止产生野指针
标签:
原文地址:http://www.cnblogs.com/sodo/p/4579336.html