【发布时间】:2014-03-29 17:04:15
【问题描述】:
我无法弄清楚发生了什么,我认为 C 是按值传递的,但这个简单的函数让我对它的工作原理感到困惑。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void testFunc(char string1[])
{
char string2[50] = "the end";
strcat(string1, string2);
printf("in func %s \n", string1);
}
void main()
{
char string1[50] = "the start";
printf("%IN MAIN %s \n", string1);
testFunc(string1);
printf("IN MAIN %s \n", string1);
}
令人困惑的输出是:
主要是开始
IN FUNC 从头到尾
主要是开始和结束
那么这里发生了什么? C 真的是传递 char 数组的地址而不是复制它的值吗?我认为这就是char* 的行为而不是char[]
【问题讨论】:
-
请注意,
void main()仅在 Windows 上有效;它在 Unix 系统上无效。 -
您可能的意思是:
void main()不会在 Windows 上爆炸。只有一些微控制器想要这样。
标签: c string parameter-passing