【发布时间】:2015-09-09 12:52:50
【问题描述】:
晚上好, 关于以下代码的快速问题:
// 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 循环中将其重新用作指针??为什么我不必创建两个单独的变量?
【问题讨论】:
-
指针是指针是指针。不管它指向什么,它仍然是一个指针。
-
不要把
malloc和朋友的结果投到C! -
另外,请记住,您也可以将数组索引语法与指针一起使用,并且
*(arr + i)等同于arr[i],这通常更直观(并且写得更少)。跨度> -
您对“再利用”有何理解?您取消引用它,但您也可以分配一个新值。您似乎错过了一些基本概念 - 没有冒犯!我可以推荐读一本C书吗?指针在(几乎)每一个重要的 C 程序中都使用,所以你真的必须很好地理解它们。每一本好书都会详细介绍这个主题。
-
Olaf - 碰巧我正在阅读 K.N. 的“C Programming : A modern approach 2nd Edition”。现在是国王,所以感谢您对我的基础知识的关注……我也知道指针的重要性,因此也感谢您。数组表示法和与之等效的指针算术使我感到困惑。我正在尝试找到每个可能的情况,其中一个等于另一个,因为目前它在我的脑海中是一个很大的混乱。除此之外,我对大多数基础知识都很好:)
标签: c arrays pointers double-pointer