指向指针的指针的一个问题

来源:百度文库 编辑:神马文学网 时间:2024/04/20 21:37:07
指针在计算机中是一个32位(即四字节)的一个值,这32位数据代表一个地址,当你声明了一个 char**p的指针的时候 ,---  注解:{如果*p = (char *)malloc(10);就会出错会出错} ---   自动分配了32位大小的空间存储指针p,但是,注意,p没有指向任何空间,所以*p操作是错误的,你必须先为*p分配一块空间才行,具体做法如下:
p=(char**)malloc(sizeof(char*));
如上语句中分配了一个大小为char*(即32位大小)的空间,并把指向该空间的指针(其实就是该空间的地址)赋值给了p,然后当你进行的*p操作找到p所指向的空间,这时,*p = (char *)malloc(10);才没有错误.
指针不难理解,指针其实就是一个32位大小的数据,和int一样大,只不过代表地址而已,所以你也可以把地址赋值给一个int,然后在使用时通过强制类型转换告诉编译器这32位的数据其实是一个指针(地址),以后就可以像指针一样使用了,指针使用时切记指针所指向的空间已经分配了,像你遇到的情况就是没有分配存储*p指针的空间造成的。
有什么问题可以baidu hi我。