通过引用传递c中的指针数组

ila*_*lie 1 c arrays pointers

我认为通过引用以错误的方式传递我的数组因为我有很多警告.你可以帮帮我吗?

void func (char **array[], char b){
*array[0]=&b;
}

int main () {

char *array_in_main[SIZE];
char b_in_main='b';
func (*array_in_main, b_in_main);
return 0;

}
Run Code Online (Sandbox Code Playgroud)

是的我知道.这是一个毫无意义的例子,但我对语法有疑问.请检查一下!

Osi*_*ris 5

你有一个观点问题.

首先,您将错误的类型传递给您的函数.如果要修改函数中的数组,则不必使用指向数组的指针传递数组,因为数组会衰减到指向其第一个元素的指针.

其次,您尝试使用的地址b是局部变量,其范围以函数结束func,您不能在外部使用它.

此代码将起作用:

#include <stdio.h>
#define SIZE 10

void func (char *array[], char *b)
{
    array[0]=b;
}

int main () 
{
    char *array_in_main[SIZE];
    char b_in_main='b';
    func (array_in_main, &b_in_main);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)