zoukankan      html  css  js  c++  java
  • 定义字符数组的时候需要注意的地方

    对于字符数组而言

    char string[10];

    当写下上面的代码的时候,一定要明白它的内涵。

    10意思是这个数组有10个元素,即10个内存单元。

    这10个内存单元是string[0]~string[9],0到9共10个数并没有string[10],string的定义域在0到9之间的整数,10不在定义域范围之内。

    string[9]这个内存单元通常被被设置为‘’来表达数组的结束标志,也就是这个内存单元不用来存放用户数据。

    那么能用来存放用户数据的内存单元就是string[0]~string[8]共9个内存单元。

    我们一开始是定义了10个内存单元,本意是希望用来存放10个用户数据,但实际上我们只能存放9个用户数据。

    少了一个怎么办?很简单,只需要加上一即可。

    char string[11];

    这才是定义了能存放10个用户数据的数组。

    经常在代码中能看到类似下面的代码

    #define NUM 10;

    char[NUM+1];

    或者

    char[MAX_PATH+1]

    都是同样的道理

    总结一下,如果你希望你的数组能存放N个用户数据,那么定义数组的时候就需要定义成char[N+1].

    上面那个问题确实很繁琐,怎么避免呢?

    char name[]="123";

    可以通过这种方式来对字符数组初始化,和char name[4]="123";是等价的。

    为什么字符数组最后一个字符必须是呢,因为有个strlen函数会检测这个标志,如果没有,这个函数就没法正确的运行。

    而除了整型数组之外的数组就不用担心的问题,唯一需要注意的就是循环的时候注意数组越界的问题。

  • 相关阅读:
    ORA01940: cannot drop a user that is currently connected
    struts+swfupload实现批量图片上传(下篇)
    iPhone开发入门教程
    从零开始学习OpenGL ES集合
    iPhone入门学习——半翻页动画效果例子
    《Android学习指南》目录
    基于OpenGL ES 的图片翻转例子,包含双面贴图3D变换
    Android核心分析
    ios开发之分享一个特效 Cube
    仿Drinkspiration App的menu
  • 原文地址:https://www.cnblogs.com/yfish/p/9706383.html
Copyright © 2011-2022 走看看