如何将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数组。不正确吗?还有一个是一维指针数组。