c/c++语言开发共享在C中,数组初始化只有一个元素专门处理?

在阅读这个问题时,我想测试GCC中的输入,看看会输出什么错误。 令我惊讶的是以下一行:

char array[] = {"s"}; 

编译时没有错误或警告,导致大小为2的数组包含"s" 。 我原本期望编译器错误,因为表达式的右侧是char*[]类型。

在这种情况下,数组初始化只有一个元素不被视为数组,为什么?

     char array[] = {"s"}; 

    与:

     char array[] = "s"; 

    这里{ }是可选的,因为“s”是字符串文字。

    要么,

     char array[] = {'s', ''}; 

    在这种情况下, { }是初始化数组所必需的。

    正确初始化的字符串是:

     char array[] = "something"; 

    它是一个10字符arrays。

    但如果你写:

     `char* array = "something";` 

    `它是一个不同的对象,你将无法修改数组的内容。

    并且:

     char* array[] 

    不是一个字符串。

    它是一个char指针数组(char *)。 你需要为每个char分配内存*

    exp:

     char* array[3]; array[0] = malloc (10*sizeof(char)); strcpy(array[0] , "hello"); 

    但是,要拥有一个char *数组,你不能直接做:

     char* array[3]; array[0] = "hello"; 

    既不:

     char* array[] = {"first","second","other one","last"}; 

    使用此init,无法修改字符串。

    对于那些说我写的东西完全错误的人,你知道char *需要内存分配吗?

    为什么-6或更多?

    需要了解更多c/c++开发分享在C中,数组初始化只有一个元素专门处理?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享在C中,数组初始化只有一个元素专门处理?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/978915.html

      (0)
      上一篇 2021年12月12日
      下一篇 2021年12月12日

      精彩推荐