【发布时间】:2015-09-24 03:01:06
【问题描述】:
void func(char *var)
{
var = "Hello";
}
int main () {
char var[10];
func(var);
printf ("var is %s", var);
}
为什么上面的代码在 C 中不起作用? (printf 什么也不显示)。
将 var = "hello;" 更改为 strcpy(var, "hello"); 可以解决此问题:
void func (char *var)
{
strcpy(var, "HELLO");
}
【问题讨论】:
-
为什么
void func(int i) {i = 7;} int main() {int x = 5; f(x); printf("%d\n", x); return 0;}打印的是 5 而不是 7? -
这显然是按值传递的。在我上面的代码中,只需将直接分配 (=) 更改为 strcpy 即可解决问题。函数原型还是一样的,接受一个字符指针:func (char * var)。
-
非常相似。虽然没有建议或讨论 strcpy,但我正在尝试将字符串文字分配给字符指针(不从数组复制到另一个数组或尝试更改它们的地址)
标签: c