当前位置:  技术问答>linux和unix

C语言的字符数组中sizeof()操作符的计算问题,请帮忙进来看看!

    来源: 互联网  发布时间:2017-04-09

    本文导语:  直接上DEMO程序: main() {     char s[5];      memset(s, 'A', sizeof(s));     s[5] = '';     printf("s=%sn", s);   // 输出: s=AAAAA     printf("sizeof(s)=%dn", sizeof(s));  // 输出: sizeof(s)=5      } 我的问题如下: 1. char s[...

直接上DEMO程序:
main()
{
    char s[5]; 
    memset(s, 'A', sizeof(s));
    s[5] = '';
    printf("s=%sn", s);   // 输出: s=AAAAA
    printf("sizeof(s)=%dn", sizeof(s));  // 输出: sizeof(s)=5
    
}

我的问题如下:

1. char s[5], 表示字符数组s可以存储5个字符还是6个字符 ? 最后一个字符应该存储的是''  

2. 输出s=AAAAA没有疑问, 但是sizeof(s)为什么输出5 ? sizeof(s)计算的是s的存储空间大小,最后一个'' 没有统计进去吗 ?

3. char c[] = "abcde",  则sizeof(c)=6, 为什么这里等于6而不是5? 显然这里在统计c的存储空间大小的时候,将''统计进去了

DEMO非常简单,请这方面概念清楚的朋友们帮忙看看,非常感谢!

|
当适用了于一个结构类型或变量时,sizeof返回实际的大小,当适用一静态地址空间数组,sizeof返回全部数组的尺寸;

1. char s[5]表示存5个字符的数组,但这5个字符由于没有初始化,所以内容是随机的字符(不可预知的);
2. s[5] = '';这里你越界访问了(错误的使用),下标从0到4;sizeof()是5,这里不管最后一个字符是不是'';
3. sizeof计算静态字符串(存储在静态内存中)时,包括字符串最末尾的''字符;

|
基础问题,好好看看C语言当中关于数组和指针那部分吧。

|
''就是asc码为0的字符。计算静态字符串时当然会占字节数。

    
 
 

您可能感兴趣的文章:

  • C语言安全编码之数值中的sizeof操作符
  • c语言合并两个已排序数组的示例(c语言数组排序)
  • c语言合并两个已排序数组的示例(c语言数组排序) iis7站长之家
  • C语言构建动态数组完整实例
  • c语言动态数组示例
  • C语言安全编码之数组索引位的合法范围
  • C语言求连续最大子数组和的方法
  • C语言中全局数组和局部数组的问题
  • c语言中用字符串数组显示菜单的解决方法
  • C语言二维数组的处理实例
  • C语言安全编码数组记法的一致性
  • C语言 结构体动态数组内存释放问题
  • C语言数组指针的小例子
  • Linux下C语言怎样从键盘读入一个十六进制字符数组
  • C语言中多维数组的内存分配和释放(malloc与free)的方法
  • C语言安全之数组长度与指针实例解析
  • 约瑟夫环问题(数组法)c语言实现
  • c语言中数组名a和&a详细介绍
  • 深入理解c语言数组
  • C语言小程序 数组操作示例代码
  • C语言柔性数组实例详解
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • C语言实现输入一个字符串后打印出该字符串中字符的所有排列
  • HTML语言特殊字符大全及其编码对照表(包括转义方式)
  • 如何用C语言去除字符串两边的空字符
  • C语言中的字符串拼接问题,怎么得不到我想要的字符串?
  • Linux下的C语言字符串和字符有几种类型?和Windows下区别是不是很大?
  • C语言字符串库 AString
  • Linux c语言 如何统计utf-8编码的包含中英文和各种符号的字符串中各个字符的个数
  • c语言 字符串函数 子串
  • C语言字符串处理库 cstring
  • C语言字符串函数库 Strfunc
  • c语言有什么简单办法判断一个字符串是否是合法日期?
  • 改变redhat的系统语言/字符集
  • linux下c语言字符串数据类型的问题!
  • 关于ubuntu字符界面系统console显示多国语言
  • c语言中如何通过日期时间字符串得到时间戳?
  • 如何改变redhat的系统语言/字符集
  • Linux下C语言怎么把长整型转换为字符串
  • c语言 字符串转大写的简单实例
  • 各位大虾:请问UNIX环境下C语言函数memcpy拷贝的字符的长度有没有限制,若有,能不能修改,怎么修改?
  • C语言字符串原地压缩实现方法
  • 2013年7月和2013年8月编程语言排行榜
  • 如何在GTK2.0下实现国际化(语言选择根据自己设置的语言,不用系统的语言)
  • 2017 年热门编程语言排行榜出炉,你的语言上榜没?
  • C语言中有指针,因此C语言可以创建链表,那么Java语言没有指针,那Java是否可以创建链表呢?
  • 苹果OS X和IOS下最新编程语言swift介绍
  • 求助,在linux下,c语言和汇编语言的接口是什么?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • C语言中间语言 CIL
  • PHP编程语言介绍及安装测试方法
  • 最近学JSP,苦于HTML语言和JAVA语言太差,请教推荐几本书,thanks.


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3