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的值是相同的。您可以在具有parameterint*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;
}
}