双指针和单指针共享同一个变量
The same variable shared between double pointer and single pointer
晚上好,
关于以下代码的快速问题:
// Start of main
int i,j;
int row,col;
printf("Enter the values for row and col:\n");
scanf("%d%d",&row,&col);
int **arr=(int**)malloc(row*(sizeof(int*)));
for(i=0; i<row; i++)
{
*(arr+i) = (int*)malloc(sizeof(int)*col);
}
// .. code after this snippet
为什么我可以将变量 arr
用作指向指针的指针,然后将其重新用作 for 循环内的指针?为什么我不必创建两个单独的变量?
在 for
循环中,您 不是 使用 arr
作为 指针指向整数 ;您正在使用 *(arr+i)
作为 指向整数的指针 ,这与取消引用 arr
一致,后者是 指向的指针-a-pointer-to-an-int.
你不是"reusing" arr
既是指针又是指针。 arr
的类型为 int **
,但随后您执行一些指针运算并使用 *(arr + i)
取消引用指针,并且该表达式的类型为 int *
.
此外,正如 Joachim 在评论中提到的,*(arr + i)
等同于 arr[i]
。使用此表示法可以更清楚地说明您在做什么。
晚上好, 关于以下代码的快速问题:
// Start of main
int i,j;
int row,col;
printf("Enter the values for row and col:\n");
scanf("%d%d",&row,&col);
int **arr=(int**)malloc(row*(sizeof(int*)));
for(i=0; i<row; i++)
{
*(arr+i) = (int*)malloc(sizeof(int)*col);
}
// .. code after this snippet
为什么我可以将变量 arr
用作指向指针的指针,然后将其重新用作 for 循环内的指针?为什么我不必创建两个单独的变量?
在 for
循环中,您 不是 使用 arr
作为 指针指向整数 ;您正在使用 *(arr+i)
作为 指向整数的指针 ,这与取消引用 arr
一致,后者是 指向的指针-a-pointer-to-an-int.
你不是"reusing" arr
既是指针又是指针。 arr
的类型为 int **
,但随后您执行一些指针运算并使用 *(arr + i)
取消引用指针,并且该表达式的类型为 int *
.
此外,正如 Joachim 在评论中提到的,*(arr + i)
等同于 arr[i]
。使用此表示法可以更清楚地说明您在做什么。