c - 指向数组指针的指针

标签 c arrays pointers

<分区>

考虑以下 C 代码:

char array1[1]={1};
char array2[2]={2, 2};

void viewDataPointedToBy(char* z)
{
  printf("%i\n", *z);
}

int main(void)
{
  viewDataPointedToBy(array1);   //prints 1, as expected.
  viewDataPointedToBy(array2);   //prints 2, as expected.

  viewDataPointedToBy(&array1);  //prints 1, How??
  viewDataPointedToBy(&array2);  //prints 2, How??

  viewDataPointedToBy(&&array1); //Compilation Error: 'array1' used but not defined, Why ?

  system ("pause");
  return 0;
}

我了解 viewDataPointedToBy 前两次调用的结果。 我需要解释以下三个电话的结果。

最佳答案

这是因为在 C 中数组名和数组地址是等价的。所以当你传递&array1时就相当于传递了array

您可以尝试打印地址以确认此行为:

printf("%u %u\n", array1, &array1); 

关于c - 指向数组指针的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19118888/

相关文章:

c - 尝试从 char*[] 复制所有字符串但出现段错误

c - 函数中的指针 "expected expression before = token"

C - 计算字符串中的单词

c - 导致段错误的指针和字符串

c++ - 使用来自类成员的指针初始化二维数组?

c - 字符串的空终止似乎不起作用

java - 在数组中递归移动

c - 将参数传递给函数以有效地创建分配在堆栈上的数组

c - 主循环设置什么参数

c# - 使变量指向另一个变量