将2D整数数组作为双指针传递给函数VS 2D字符串数组作为双指针的行为不一样吗?

时间:2019-11-06 06:26:37

标签: c function pointers multidimensional-array pointer-to-pointer

嗨,我试图了解将类型char与类型int的2d数组作为双指针func(int **ptr)参数传递给函数的区别。问题在于它的行为有所不同。下面,我将显示两个使用PythonTutor for C的类型charint的示例。

我查看了整个互联网,并问了一些朋友,但找不到答案。

具有char类型的示例: int func(char ** arr)

{
  printf("%d", **arr);  
}
int main() 
{
  char *arr[] = {"char1","char2"};
  return 0;
}

int类型的示例:

int func(int **arr)
{
  printf("%d", **arr);  
}
int main() 
{
  int *arr[] = {{1,3},{4,5,6}};
  return 0;
}

要注意的一件事是,函数主体使用传递给它的双指针并不重要,我要理解的问题是,为什么在2D char数组的情况下双指针指向一个指向整数的指针,而二维int数组未指向数组中的整数?

下面是这两种情况的pythontutor可视化结果。

具有char 2D数组类型的示例:http://pythontutor.com/c.html#mode=display

类型为int 2D数组的示例:http://pythontutor.com/c.html#mode=display

还提供最终结果的快照:

具有char 2D数组类型的示例:

enter image description here

int 2D数组类型的示例:

enter image description here

0 个答案:

没有答案