C:为什么我不能传递字符串作为函数参数?
问题描述:
我以为我可以一个字符串指针传递给一个函数作为这样的:C:为什么我不能传递字符串作为函数参数?
int main()
{
const char fileName[] = "network/fileName.yo";
WriteFile(fileName);
}
int WriteNetwork(char* fileName)
{
printf("the filename is %s\n", fileName);
}
,但这似乎并没有如我期望它的工作。我必须错过一些非常简单的事情,但似乎无法追踪它!
答
指向字符串文字的指针未传递到WriteFile()
。 fileName[]
用字符串文字"network/fileName.yo"
初始化。它是通过的变量fileName
。因为它是一个数组,它被转换为指向其第一个元素的指针。
在使用它之前声明或定义WriteNetwork()
。
将指向const
数据的指针传递给期望指向非const
数据的函数应该无法编译。将WriteNetwork()
更改为接受const
指针。 @Lưu Vĩnh Phúc
还要注意后,似乎把WriteFile()
为WriteNetwork()
@Ray Toal。当然这是一个文书错误,函数名称和调用应该是相同的。
// int WriteNetwork(const char* fileName) {
int WriteFile(const char* fileName) {
printf("the filename is %s\n", fileName);
}
int main(void) {
const char fileName[] = "network/fileName.yo";
WriteFile(fileName);
}
我一定是失去了一些东西很简单,但似乎无法追查!
小费: 节省时间。启用所有编译器警告。他们提供快速反馈以帮助您“追踪”。
+1
太棒了!如果你要介绍前向宣言,这个答案可能还会更好,但是因为有不止一种方式来剥皮猫,所以1 /回答问题,2 /是准确的,所以......我的心可以做爱表情符号! – Sebivor
'WriteFile'或'WriteNetwork'? –
它是如何工作的?你期望它如何工作?发生了什么?这些都是有用的东西,包括。 –
更改'WriteFile'声明以获取一个'const char *' –