双指针地址
Double pointer addresses
我创建并分配了一个像这样的双指针:
int **a;
a = (int**)malloc(10 * sizeof(int *));
for (int i = 0; i < 10; i++)
*(a+i) = (int *)malloc(10 * sizeof(int));
然后我像这样初始化它:
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
**a = 1;
(*a)++;
}
a++;
}
我的问题和问题是如何保存我的双指针的地址?此时我丢失了它们,不能再使用它们了。
当数组下标可以时,不要使用显式指针算法和取消引用:
int rows = 10, cols = 10
int **a;
// don't cast the return value of malloc
a = malloc(rows * sizeof(*a));
for (int i = 0; i < rows; i++)
a[i] = malloc(cols * sizeof(**a));
...
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
a[i][j] = 1;
}
}
Return a 来自一个函数,将它保存为一个 class 成员,它就像任何其他变量一样。如果你想保存数组的内容,那么就这样做(但这不是我所说的保存双指针——顺便说一下,通常的描述是 "pointer-to-pointer")。
我创建并分配了一个像这样的双指针:
int **a;
a = (int**)malloc(10 * sizeof(int *));
for (int i = 0; i < 10; i++)
*(a+i) = (int *)malloc(10 * sizeof(int));
然后我像这样初始化它:
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
**a = 1;
(*a)++;
}
a++;
}
我的问题和问题是如何保存我的双指针的地址?此时我丢失了它们,不能再使用它们了。
当数组下标可以时,不要使用显式指针算法和取消引用:
int rows = 10, cols = 10
int **a;
// don't cast the return value of malloc
a = malloc(rows * sizeof(*a));
for (int i = 0; i < rows; i++)
a[i] = malloc(cols * sizeof(**a));
...
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
a[i][j] = 1;
}
}
Return a 来自一个函数,将它保存为一个 class 成员,它就像任何其他变量一样。如果你想保存数组的内容,那么就这样做(但这不是我所说的保存双指针——顺便说一下,通常的描述是 "pointer-to-pointer")。