c语言指针初始化的几种方法,C语言结构体指针变量初始化

1,C语言结构体指针变量初始化void RegList(LB *L)//初始化线性表(建立头结点,指针域置为空) L=(LB *)malloc(sizeof(LB)); L->next=NULL;}改成指针的指针 调用的时候RegList(&k);就行了 。void RegList(LB **L)*L = (LB*)malloc(sizeof(LB));(*L)->next = NULL;}
2,C语言 如何初始化指针数组 比如char dd5char 指针,也就是char *类型 。其初始化本质上与其它变量初始化没有什么区别 , 就是赋予其一个初始化的值 。对于指针来说,在C语言中,就是一个地址 。区分初始化情况,有四种表象:1 初始化为空 。即char * str = NULL;的形式,NULL在C语言中是特定的空指针,其值为0.在C语言中,以NULL作为指针的一个未生效状态 , 其本身是一个非法的地址值 。2 初始化为常量字符串地址 。char * str = "test";常量字符串在运行时会被放在常量空间中,于是这样初始化后,地址是常量空间中的一个地址,对于该地址只能读?。?不可写入 。即str的值可以改,但是str指向的值是不可修改的 。3 初始化为变量地址 。这里的变量地址,包括全局变量,局部变量的地址 , 以及通过动态分配申请到的内存地址 。这种情况下,对指针指向的空间是可以修改的 。4 不做初始化 。这种情况在C语言中是允许的 。如果为全局变量或静态局部变量 , 系统默认初始化为0值,即NULL 。而对于局部变量,将是一个随机值 。所以如果是局部变量不做初始化,在取其指向空间值前,必须为其指定一个合法的值,否则访问会出错 。short i;for(i=0;i<5;i++)dd[i] = (char *)malloc(sizeof(char));}char *dd[5]=再看看别人怎么说的 。
3,c语言指针初始化注意了,a只是一个双重指针 , 不是数组 。还有new这个东西是C++中的 。C中用malloc分配内存,再初始化 。第一个,指针变量是局部变量,且没有正确赋值,是一个野指针第二个,指针变量是形参,在函数调用中就吧实参值传给形参了,所以实际上指针p是有被正确赋值的(当然此处假设是调用正确的情况下),不是野指针指针指向变量后才能操作,如:int *pt,a;pt=&a;*pt=5;第二个char *i;i="hello";这样是正确的.int array[4][5][6];int (*pa)[4][5][6] = &array;//一级指针,指针向一个数组,该数组为int [4][5][6]int (**a)[4][5][6] = &pa;//二级指针,指向上一行的一级指针 对于动态分配的结构,不可能用数组这种形式来存储的 。因为数组的下标必须在编译时刻明确为常量 。楼主用的C++ , 可以考虑用STL的vector 。另外,我觉得本身用维度这么大的数组就不是很合适 , 应该换别的方式 。指针申明的时候最好初始化 。。初始化以后的指针在一些操作下野会变成野指针,比如:free释放内存以后 。。指向被释放的内存的指针也是野指针 。。我理解的野指针就是不可控的,不确定指向的指针都是野指针 。【c语言指针初始化的几种方法,C语言结构体指针变量初始化】

    推荐阅读