为什么在数组不在此代码中时允许使用字符串?

时间:2015-07-07 18:11:22

标签: c string argument-passing

#include<stdio.h>
void function1(){}
int main(void)
{
  function1(1,0.45,'b',"I am trying");
  function1();
  return 0;
}

这很好地编译。 但是下面显示了

  

错误:首先在function1中使用arr ....

请注意,我正在使用code::blocks IDE并使用.c扩展名保存该文件。

#include<stdio.h>
void function1(){}
int main(void)
{
   function1(1,0.45,'b',"I am trying",arr[12]);
   function1();
   return 0;
}
抱歉,把它称为数组我犯了一个错误。但{1,2,3,4}这是一个你同意的阵列..但这也行不通。这是一个错误还是什么?

1 个答案:

答案 0 :(得分:3)

在第二种情况下,

 function1(1,0.45,'b',"I am trying",arr[12]);

arr[12]是一个变量,arr本身未定义,至少是一个数组。

在C中,您需要在使用之前定义变量。

FWIW,

function1(1,0.45,'b',"I am trying");

有效,因为

  • 1是一个int字面值
  • 0.45是一个double字面值
  • 'b'是一个char字面值
  • "I am trying"是字符串文字

并且它们都不是变量