【发布时间】:2019-03-19 23:25:40
【问题描述】:
假设我想使用函数修改 char 数组。 我总是看到人们使用 malloc、calloc 或指针来修改 int、char 或 2D 数组。 如果我说,只有当我使用 malloc、创建该数组指针并返回他时,才能从函数返回该字符串?那么为什么不通过将字符串传递给函数参数来获取/更改字符串呢? 我的演示不是在参数中使用 char 数组比分配/释放更容易吗?我的概念是错误的,还是为什么我从来没有看到人们将数组传递给函数?当我看到这种更改 char 数组的方法很容易时,我只看到使用 malloc 等传递的代码,例如“char *array”,而不是“char array[]”。我错过了什么吗?
#include <stdio.h>
void change(char array[]){
array[0]='K';
}
int main(){
char array[]="HEY";
printf("%s\n", array);
change(array);
printf("%s\n",array );
return 0;
}
【问题讨论】:
-
这没有提供足够的信息吗? stackoverflow.com/questions/10186765/…
-
如果你打电话给
change("HEY");,你觉得会发生什么 -
并非所有字符串都是可变的,因此并非所有字符串都可以更改。这就是为什么通常的方法是
malloc()足够的内存并在结果分配的内存中生成更改后的字符串