gpt4 book ai didi

c malloc 通过将此数组传递给函数来获取二维字符数组

转载 作者:行者123 更新时间:2023-12-04 05:37:43 26 4
gpt4 key购买 nike

我的 怎么了字符**数组2; 数组?

当 malloc 在 main 函数中时,下面的代码工作正常。但是当 malloc 在外部函数中时......这不起作用。

void function(int *var1 ,int array1[][3], char** array2);

main(){
int var1 = 0
int array1[10][3];
char ** array2;

function(&var1 , array1, array2); //Something wrong in here???

printf("Value of var1: %d\n", var1 ); /*Display 5 - OK*/
printf("Value of array1[0][0]: %d\n", array1[0][0] ); /*Display 6 - OK */
printf("Value of array2[0]: %s\n", array2[0]); /*Error - Function stops here */
return;
}



void function(int *var1 ,int array1[][3], char** array2)
{
int i = 0;
array2= malloc(10 * sizeof(char *));
for(i = 0; i<10; i++)
{
array2[i] = malloc(10 * sizeof(char *));
strcpy(array2[i], "SomeText");
}

*var1 = 5;

array1[0][0] = 6;

printf("Value of var1: %d\n", var1 ); /*Display 5 - OK*/
printf("Value of array1[0][0]: %d\n", array1[0][0] ); /*Display 6 - OK */
printf("Value of array2[0]: %s\n", array2[0]); /*Display "SomeText - OK*/

return;

}

最佳答案

看看这个 link .你需要了解C中函数变量是如何传递的。变量在 C 中按值传递 .

试试这个代码:

void function(int *var1 ,int array1[][3], char*** array2);

int main(int argc, char*argv[]){
int var1 = 0;
int array1[10][3];
char **array2;

function(&var1 , array1, &array2); //Something wrong in here???

printf("Value of var1: %d\n", var1 ); /*Display 5 - OK*/
printf("Value of array1[0][0]: %d\n", array1[0][0] ); /*Display 6 - OK */
printf("Value of array2[0]: %s\n", array2[0]); /*Error - Function stops here */
return;
}



void function(int *var1 ,int array1[][3], char*** array2)
{
int i = 0;
(*array2)= malloc(10 * sizeof(char *));
for(i = 0; i<10; i++)
{
(*array2)[i] = malloc(10 * sizeof(char *));
strcpy((*array2)[i], "SomeText");
}

*var1 = 5;

array1[0][0] = 6;

printf("Value of var1: %d\n", *var1 ); /*Display 5 - OK*/
printf("Value of array1[0][0]: %d\n", array1[0][0] ); /*Display 6 - OK */
printf("Value of array2[0]: %s\n", (*array2)[0]); /*Display "SomeText - OK*/

return;

}

按值传递:(在 C 中)从这里 link .
  • 在此方法中传递变量的值。对formal 所做的更改不会影响实际参数。
  • 将为这两个变量创建不同的内存位置。
  • 这里会在函数栈中创建临时变量,不影响原变量。

  • 这解释了为什么您的变量 array2不会改变你的功能。 C 中的变量——它是否是指针无关紧要——总是按值传递。

    希望有帮助!

    关于c malloc 通过将此数组传递给函数来获取二维字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11707497/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com