char指针数组赋值

时间:2013-11-24 21:53:43

标签: c arrays pointers

这是一个非常快速的问题。 为什么我被允许这样做:

char* sentence[2] ={"blahblah","trololo"};
int main() {
  printf("%s",sentence[0]);
  printf("%s",sentence[1]);
  return 0;
}

但不是吗?:

 char* sentence[2];
 sentence[0] = "blahblah";
 sentence[1] = "trololo";
 int main() {
  printf("%s",sentence[0]);
  printf("%s",sentence[1]);
  return 0;
}

3 个答案:

答案 0 :(得分:3)

您不允许执行第二部分,因为赋值不在函数中。将作业移动到main()(或其他功能)时,它将有效

char* sentence[2];
int main() {
  sentence[0] = "blahblah";
  sentence[1] = "trololo";
  printf("%s",sentence[0]);
  printf("%s",sentence[1]);
  return 0;
}

答案 1 :(得分:0)

  

为什么我可以这样做:

char* sentence[2] ={"blahblah","trololo"};  

全局变量允许初始化。

  

但不是吗?:

陈述

sentence[0] = "blahblah";
sentence[1] = "trololo";  

在函数(main())之外没有意义。将它们移到函数内部就可以了。

答案 2 :(得分:-3)

抱歉,我没有以正确的方式阅读问题而且我没有看到函数main()

代码每次都在函数内部工作。功能必须被调用! main由系统调用。所以这段代码是不可能实现的。

你可以从函数中推出全局变量(例如costant)或struct。