我想像这样使用时更改字符数组的值
char *str;
fun(str);
void fun(char *str) {
str = (char *) ("changed");
}
它没有做任何事情,并且str为null
而以这种方式
char *str;
fun(&str);
void fun(char **str) {
*str = (char **) ("changed");
}
一切都好。但是我有一个函数定义为void fun(char * str)的限制,如何使用此用例更改值
我想更改字符数组的值
使用fun(char *str)
,str
是一个指针。要更改字符数组的值,请不要更改指针str
。将存储str
点的内容更改为。
void fun(char *str) {
// str = (char *) ("changed");
str[0] = 'c';
str[1] = 'h';
str[2] = 'a';
str[3] = 'n';
str[4] = 'g';
str[5] = 'e';
str[6] = 'd';
str[7] = '\0';
// or simply
strcpy(str, "changed");
}
确保在调用指针时引用了可用空间
char buffer[100] = "Before";
printf("<%s>\n", buffer);
fun(buffer);
printf("<%s>\n", buffer);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句