百科问答小站 logo
百科问答小站 font logo



C/C++中的数组为什么必须定义之后在一行内立刻赋值,而不能定义数组之后换一行再赋值? 第1页

  

user avatar   zhang-hao-72 网友的相关建议: 
      

这样可以,先用typeof把匿名字面量转换成数组对应类型,再memcpy。不过应该没什么地方用得上吧。。。

       #include <stdio.h> #include <string.h>  int main(void) {     int a[3];     memcpy(a,  (typeof(a)){1,2,3}, sizeof(a));      printf("%d
", a[0]);      return 0; }     

如果是结构体,连memcpy也不用,可以直接用加了typeof的匿名变量来赋值。

typeof似乎是gcc的扩展语法,gcc以外的环境不知道能不能用了。

       #include <stdio.h> #include <string.h>  struct {     int a;     float b; } t; int main(void) {     t = (typeof(t)){1, 2.0};     printf("%f
", t.b);     return 0; }     




  

相关话题

  为什么要有指针? 
  如果你们想要自创一个编程语言,你们希望它有什么特色? 
  将一个double型(int型)格式化输出为int型(double型)时发生了什么? 
  CMake如何优雅地读取txt内容并载入到C++二进制中? 
  C++原子变量数组能用memset置空吗? 
  C++ 运动完上一个函数到下一个函数时,上一个函数里的变量值(结构体变量)为什么没保留住,变成零了? 
  c#中没有友元类那么这种设计是否不太合理,如何修改才能得到更好的方案? 
  C++ 学到什么程度才能叫精通? 
  c/c++语言中,如果不把声明和实现分开,而是直接一起写到头文件中,会有什么不好的影响? 
  C++的核心究竟是什么?学到什么程度才算精通? 

前一个讨论
300吨铁球从10万米高空落下会怎样?
下一个讨论
为什么欧美居民没有炒菜的习惯?





© 2025-06-05 - tinynew.org. All Rights Reserved.
© 2025-06-05 - tinynew.org. 保留所有权利