嗨,我试图了解将类型char
与类型int
的2d数组作为双指针func(int **ptr)
参数传递给函数的区别。问题在于它的行为有所不同。下面,我将显示两个使用PythonTutor for C的类型char
和int
的示例。
我查看了整个互联网,并问了一些朋友,但找不到答案。
具有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数组类型的示例:
int 2D数组类型的示例: