我想知道如何在结构中访问双指针,例如:
typedef struct Example {
char **set;
int size;
}Example;
在函数内部调用struct:
struct Example exmpl;
如果我需要在该数组数组中创建一个新数组,我将如何在函数/ main中调用它?
或者它与常规exmpl->set
?
答案 0 :(得分:0)
set
的类型无关紧要,您可以使用exmpl.set
访问它。如果您需要访问单个元素,例如exmpl.set[0][0]
。
如果你需要为它分配内存,你需要为外部数组分配内存,然后为每个内部数组分配内存,就像这样创建一个10x20的数组:
struct Example exmpl;
exmpl.set = malloc(10 * sizeof(char*)); // 10 "arrays" in the set
for (int i = 0; i < 10; i++)
exmpl.set[i] = malloc(20 * sizeof(char)); // 20 chars within each "array"
然后设置每个元素的值:
for (int i = 0; i < 10; i++)
for (int j = 0; j < 20; j++)
exmpl.set[i][j] = calculate(i, j);
并且,数组和指针是不同的,所以你在这里有一个指向char的指针(它的工作方式类似于二维chars数组)