C 为什么可以';我的动态分配阵列不能在它之外访问';s函数?[丙]

C 为什么可以';我的动态分配阵列不能在它之外访问';s函数?[丙],c,malloc,C,Malloc,我正在尝试访问在main函数中的fooA()函数中创建的数组。我使用malloc动态分配数组,并将传递的指针指向该数组,但指针基本上不再指向相同的值 int main() { int *test; fooA(test); printf("%d\n", test[0]); free(test); } void fooA(int *pass){ int pass = malloc(5*sizeof(int)); for(int i=0;i<5;

我正在尝试访问在
main
函数中的
fooA()
函数中创建的
数组。我使用
malloc
动态分配
数组
,并将传递的指针指向该数组,但指针基本上不再指向相同的值

int main() {
    int *test;
    fooA(test);
    printf("%d\n", test[0]);
    free(test);
}

void fooA(int *pass){
    int pass = malloc(5*sizeof(int));
    for(int i=0;i<5;i++){
        pass[i] = i;
    }
}
intmain(){
int*测试;
fooA(测试);
printf(“%d\n”,测试[0]);
免费(测试);
}
无效fooA(整数*通行证){
int pass=malloc(5*sizeof(int));

对于(inti=0;i首先,代码中的问题



void fooA(int*pass)/*首先,代码中的问题



无效fooA(整数*通行证)/*这是因为函数参数是传递值的。因此,在函数调用之后,在函数调用编译之前,test的值是相同的。您可以在具有parameter
int*pass
的函数中定义一个变量
int*pass
。这两个变量在同一范围内并且具有不同的类型。在最佳情况下,您可以e仍然隐藏参数。这是因为函数参数是传递值的。因此,在函数调用之后,在函数调用之前,测试的值是相同的。这甚至可以编译吗?在具有参数
int*pass
的函数中定义一个变量
int-pass
。这两个变量在同一范围内并且具有不同的值t类型。在最好的情况下,您仍然隐藏参数。它应该是
int*fooA(void);
(否则它是非原型声明)它应该是
int*fooA(void);
(否则它是非原型声明)
void fooA(int** pass);

int main() {
    int *test;
    fooA(&test); /*< passing address of test variable */
    printf("%d\n", test[0]);
    free(test);
}

void fooA(int** pass) {
    /* need to dereference pass here to modify the original pointer value */
    *pass = malloc(5*sizeof(int));
    for(int i=0;i<5;i++){
        (*pass)[i] = i;
    }
}