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

-2 c string

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

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

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

但这似乎不像我期望的那样有效.我必须错过一些非常简单的东西,但似乎无法追踪它!

chu*_*ica 6

指向字符串文字的指针未传递给WriteFile(). fileName[]用字符串文字初始化"network/fileName.yo".它fileName是传递的变量.因为它是一个数组,它被转换为指向其第一个元素的指针.

WriteNetwork()在使用之前声明或定义.

将指向const数据的指针传递给期望指向非const数据的指针的函数应该无法编译.更改WriteNetwork()为接受const指针.@LưuVĩnhPhú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);
}
Run Code Online (Sandbox Code Playgroud)

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

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