指针在C语言编程中的应用

指针在C语言编程中的应用,c,pointers,C,Pointers,我在试图理解C编程中指针的用法时遇到了困难。我不明白这为什么不能编译: void func(char**p); void other_fun(void) { char arr[5][3]; func(arr); } 主要问题是数组与指针不同。在语法上,可以在函数中以非常相似的方式使用它们,但它们并不相同。因此,您在func(arr)中传递的是char(*)[3]类型的变量,或者是指向3个chars数组的指针,而不是指向指针的指针,这正是func所期望的。主要问题是数组与指针不同

我在试图理解C编程中指针的用法时遇到了困难。我不明白这为什么不能编译:

void func(char**p);
void other_fun(void)
{
    char arr[5][3];
    func(arr);
}

主要问题是数组与指针不同。在语法上,可以在函数中以非常相似的方式使用它们,但它们并不相同。因此,您在
func(arr)
中传递的是
char(*)[3]
类型的变量,或者是指向3个
char
s数组的指针,而不是指向指针的指针,这正是
func
所期望的。

主要问题是数组与指针不同。在语法上,可以在函数中以非常相似的方式使用它们,但它们并不相同。因此,您在
func(arr)
中传递的是
char(*)[3]
类型的变量,或者是指向3个
char
s数组的指针,而不是指向指针的指针,这正是
func
所期望的。

主要问题是数组与指针不同。在语法上,可以在函数中以非常相似的方式使用它们,但它们并不相同。因此,您在
func(arr)
中传递的是
char(*)[3]
类型的变量,或者是指向3个
char
s数组的指针,而不是指向指针的指针,这正是
func
所期望的。

主要问题是数组与指针不同。在语法上,可以在函数中以非常相似的方式使用它们,但它们并不相同。因此,您在
func(arr)
中传递的是
char(*)[3]
类型的变量,或者是指向3个
char
s数组的指针,而不是指向指针的指针,这正是
func
所期望的。

什么“不起作用”?您需要提供更多信息。什么是
func
?您只显示一个声明。
arr
是一个数组,而不是指针。规则是,“T的N元素数组”衰减为“T的指针”
arr
具有类型“字符
char
的三元素数组的五元素数组”,因此在本例中,
T
是“字符
char
的三元素数组”。因此,
arr
char[5][3]
衰减到
char(*)[3]
。所以您的
func
原型需要是
void func(char(*arr)[3])
。什么“不起作用”?您需要提供更多信息。什么是
func
?您只显示一个声明。
arr
是一个数组,而不是指针。规则是,“T的N元素数组”衰减为“T的指针”
arr
具有类型“字符
char
的三元素数组的五元素数组”,因此在本例中,
T
是“字符
char
的三元素数组”。因此,
arr
char[5][3]
衰减到
char(*)[3]
。所以您的
func
原型需要是
void func(char(*arr)[3])
。什么“不起作用”?您需要提供更多信息。什么是
func
?您只显示一个声明。
arr
是一个数组,而不是指针。规则是,“T的N元素数组”衰减为“T的指针”
arr
具有类型“字符
char
的三元素数组的五元素数组”,因此在本例中,
T
是“字符
char
的三元素数组”。因此,
arr
char[5][3]
衰减到
char(*)[3]
。所以您的
func
原型需要是
void func(char(*arr)[3])
。什么“不起作用”?您需要提供更多信息。什么是
func
?您只显示一个声明。
arr
是一个数组,而不是指针。规则是,“T的N元素数组”衰减为“T的指针”
arr
具有类型“字符
char
的三元素数组的五元素数组”,因此在本例中,
T
是“字符
char
的三元素数组”。因此,
arr
char[5][3]
衰减到
char(*)[3]
。因此,您的
func
原型需要是
void func(char(*arr)[3])