C:为什么我不能将字符串文字作为函数参数传递?

时间:2017-09-05 01:35:50

标签: c string

我以为我可以将字符串指针传递给函数:

int main() 
{
   const char fileName[] = "network/fileName.yo";
   WriteFile(fileName);
}

int WriteNetwork(char* fileName)
{
   printf("the filename is %s\n", fileName);
}

但这似乎并没有像我预期的那样发挥作用。我必须错过一些非常简单的东西,但似乎无法追踪它!

1 个答案:

答案 0 :(得分:6)

指向字符串文字的指针未传递给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);
}
  

我必须遗漏一些非常简单的东西,但似乎无法追踪它!

提示: 省时间。启用所有编译器警告。他们提供快速反馈,以帮助您追踪"