【C语言】指针是一个变量

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,防止产生野指针

posted @ 2015-06-15 21:52  魔法工匠  阅读(689)  评论(0)    收藏  举报