【发布时间】:2020-06-09 09:33:14
【问题描述】:
下面的代码 sn-p 显示了一个指向数组基址的指针和一个指向元素的指针;
第一种情况:
/* Pointer to an array of 10 integers */
int arr[10]
int (*ptr)[10];
ptr = & arr; //points to the base address of an array of 10 integers
for (i = 0; i < 10; i++) //prints the values
printf("%d\n", *(*ptr + i));
第二种情况:
/* Pointer to an array element*/
int arr[10];
int *ptr;
ptr = arr; //Points to the first element of an array
for (i = 0; i < 10; i++) //prints the values
{
printf("%d\n", *ptr);
ptr ++;
}
我了解两种情况下访问值的区别。但是我不明白使用第一种情况有什么好处,即指向 10 个整数数组的指针,即使第二种情况看起来很简单。
【问题讨论】:
-
没有优势。它们是相同的。您断言的差异不存在。
-
@pmg 在这种情况下,它是指指约翰史密斯或约翰史密斯的房子的人。如果你知道在哪里可以找到他,你就知道在哪里可以找到他。如果你已经知道他住在哪里,你根本不需要指点,只要走到他的门前敲门,不用问路:)
-
在这种情况下没有区别,但是当您尝试将数组传递给函数和retain
sizeofinformation时可能会看到一个。 -
做一个或另一个没有优势。一切都取决于你要做什么。
-
这个最近的问题可能会澄清一些事情:stackoverflow.com/questions/62209942/…。甚至可能被骗。