Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将2d数组的内存地址存储在C中结构的指针成员中_C_Arrays_Pointers_Struct - Fatal编程技术网

如何将2d数组的内存地址存储在C中结构的指针成员中

如何将2d数组的内存地址存储在C中结构的指针成员中,c,arrays,pointers,struct,C,Arrays,Pointers,Struct,结构是 struct cloud { //declare a pointer to point to the 2d array char *pointer; }; 主函数作为参数提供给(struct cloud u*),以引用该结构 函数的其余部分涉及将值分配给2d数组arr,然后我需要使结构中的指针指向2d数组的内存位置 到目前为止,我已经完成了以下操作,并且结构指针的内存地址在赋值后没有改变 printf("2d array memory address is %

结构是

struct cloud {
    //declare a pointer to point to the 2d array
    char *pointer;

};
主函数作为参数提供给
(struct cloud u*)
,以引用该结构

函数的其余部分涉及将值分配给2d数组arr,然后我需要使结构中的指针指向2d数组的内存位置

到目前为止,我已经完成了以下操作,并且结构指针的内存地址在赋值后没有改变

    printf("2d array memory address is %p\n", arr);
    printf("struct array memory address before assignment is %p\n", &(u->pointer));

    u->pointer = arr;

    printf("struct array memory address after assignment is %p\n", &(u->pointer));

正如您在注释中所写,您有一个一维数组,声明如下

char *arr[rownum];
在该结构中,您可以声明一个指针,该指针将指向数组的第一个元素,如

struct cloud {
    char **pointer;
};
然后写一些像

u->pointer = arr;

请注意,如果数组是函数的局部变量,并且在函数外部声明了结构的对象,则退出函数后,指针将具有无效值,因为数组将不活动。

如您在注释中所述,您将声明一个一维数组,如下所示

char *arr[rownum];
在该结构中,您可以声明一个指针,该指针将指向数组的第一个元素,如

struct cloud {
    char **pointer;
};
然后写一些像

u->pointer = arr;

请注意,如果数组是函数的局部变量,并且在函数外部声明了结构的对象,则退出函数后,指针将具有无效值,因为数组将不活动。

如何声明数组?
char*arr[rownum]其中rownum只是一些整数这不是2D数组。我在该教程中遵循了#2动态分配2D数组。是不是不正确?还有一个是指针的一维数组。数组是如何声明的?
char*arr[rownum]其中rownum只是一些整数这不是2D数组。我在该教程中遵循了#2动态分配2D数组。不正确吗?还有一个是一维指针数组。