以下是数组的两种初始化方式, 区别如下:
字符串初始化:

char a[] = "hello";

采用这种方式,sizeof会计算字符串内容和结尾的’\0’字符,所以结果是6;
strlen函数则计算字符串长度,不包括’\0’。

列表初始化:

char b[] = {'h','o', 'l', 'l', 'o'};

采用这种方式,sizeof会计算列表中字符长度;
strlen函数则计算直到遇到’\0’字符的长度。

#include <bits/stdc++.h>int main(){char a[] = "hello";char b[] = {'h','o', 'l', 'l', 'o'};std::cout << "sizeof a : " <<sizeof (a) << " b : " << sizeof(b) << std::endl;std::cout << "strlen a : " <<strlen (a) << " b : " << strlen(b) << std::endl;std::cout << "a[0] : " << a[0] << " b[0] : " << b[0]<<  std::endl;
}

输出:

sizeof a : 6 b : 5
strlen a : 5 b : 10
a[0] : h b[0] : h

c语言数组初始化的区别相关推荐

  1. C语言数组初始化及malloc初始化

    前言 做笔试题的时候老有些小错误,来总结一下. 数组赋值初始化的三个方式 1.{0} 初始化 例如: int nums[3] = {0}; 但是经常出现的是给定长度(变量)然后需要进行初始化,如果写成 ...

  2. C语言数组初始化及逆向输出

    C语言数组初始化及逆向输出 #include <stdio.h> int main() {int a[10];int i;for(i=0;i<10;i++){a[i] = i;}pu ...

  3. c语言定义数组变量初始化为0,c语言数组初始化——int a[N] = {0};

    初学数组,以华科的<c 语言与程序设计>为教材,参考了<一站式学习c编程>,后者数组一章有串代码如下 int main(void) { int i, histogram[10] ...

  4. C语言 数组初始化的三种常用方法({0}, memset, for循环赋值)以及原理

    C语言中,数组初始化的方式主要有三种: 1.声明时,使用 {0} 初始化: 2.使用memset: 3.用for循环赋值. 那么,这三种方法的原理以及效率如何呢? 请看下面的测试代码: [cpp] v ...

  5. C语言数组初始化的三种方法

    C语言中,数组初始化的方式主要有三种: 1.声明时,使用 {0} 初始化: 2.使用memset: 3.用for循环赋值. 那么,这三种方法的原理以及效率如何呢? 请看下面的测试代码: #define ...

  6. C语言数组初始化骚操作

    我们在使用c语言对数组进行初始化的时候往往比较扎心要么使用对索引进行赋值要么使用memset进行分段的赋值,现在我学习到一种方法可以随意的对数组进行初始化. int array[20]={[0 ... ...

  7. c语言 数组初始化非零,C语言与单机-28-数组初始化

    我们定义一个数组,只是在内存中申请了一个连续的地址空间.空间大小是sizeof(data_type)*number.  dat_type指的是数组元素的数据节本类型,sizeof是C语言的运算符,可以 ...

  8. C语言数组初始化问题

    最近在复习C语言,然后做题时突然想到了数组的初始化问题,然后查阅资料了解到结论: 全局和静态数组都按语言规范要求被初始化为0 对于局部数组,初始化元素个数少于数组元素个数时,数组前面的元素值对应初始化 ...

  9. c语言定义不定长数组初始化_C语言数组初始化的三种方式

    1.{0} 初始化 int arr1[3] = {0}; 使用 {0} 的方式最简洁,一般在定义的时候使用. 2.for 循环初始化 int arr2[3]; for (int i = 0; i &l ...

最新文章

  1. 计算机二级第十九套题电子表格,2012年计算机二级Access第十九套上机试题及答案详解...
  2. 行业深度见解•SD-WAN对于企业云的重要性
  3. 农村程序员吐槽:虽然挣着2万高薪,但却舍不得吃舍不得穿
  4. 【每周CV论文推荐】 初学深度学习人脸识别和验证必读文章
  5. eclipse中在类saolei.Test 中找不到main方法
  6. vuejs 轮播_如何在VueJS中设计和构建轮播功能
  7. linux 网络测试脚本,linux检查网络状态脚本
  8. 2017.9.10 连续攻击游戏 思考记录
  9. mysql join 与 cross join 效率_浅析Mysql Join语法以及性能优化
  10. linux下pip安装模块失败,Linux pip包安装错误
  11. 第27天 LDT与库
  12. 股票做空和做多是什么意思
  13. 深度学习环境安装之显卡驱动程序安装
  14. 系统(HTML页面)设置icon图标
  15. 自学SQL网题库答案
  16. 某信息安全攻防大赛周周练考核(一) Writeup By 2ha0yuk7on
  17. Mac 默认php安装目录
  18. 最新Whatsns内容付费SEO优化带采集和熊掌号运营问答系统
  19. Arduino开发遥控小车(三)基于nRF24L01无线模块实现舵机转向和直流电机调速
  20. 【金融量化】每一个优秀交易员注定是孤独的

热门文章

  1. 小程序的tabBar点击事件
  2. Paddlehub人像抠图解读
  3. python gui(界面)的学习:构造窗体,构造按钮,标签,Entry,list,conbobox选择列表
  4. html div 嵌套 iframe,iframe嵌套页面自适应
  5. 分布式机器学习:同步并行SGD算法的实现与复杂度分析
  6. Ubuntu 16.04下安装ffmpeg和opencv的安装与简介
  7. 分析高数值孔径物镜的聚焦
  8. php前端java后端开发_java是前端还是后端
  9. 室内去污染的植物精选, 防辐射 去甲醛
  10. java微信公众号支付退款_java 微信公众号支付 详细教程【站长吐血整理】