zoukankan      html  css  js  c++  java
  • C++定义和初始化数组以及memset的使用(转)

    一、一维数组

      1. 静态 int array[100];   定义了数组array,并未对数组进行初始化
      2. 静态 int array[100] = {1,2};  定义并初始化了数组array
      3. 动态 int* array = new int[100];  delete []array;  分配了长度为100的数组array

                          注:动态申请数组可以避免用一个显示的数值去定义数组大小例如可以int number=100;int* a=new int[number]

                          4. 动态 int* array = new int[100](1,2);  delete []array; 为长度为100的数组array初始化前两个元素

    二、二维数组

    1.静态 int array[10][10];  定义了数组,并未初始化

    2.静态 int array[10][10] = { {1,1} , {2,2} };  数组初始化了array[0][0,1]及array[1][0,1]

    3.动态 int (*array)[n] = new int[m][n]; delete []array;

    4.动态 int** array = new int*[m]; for(i) array[i] = new int[n];  for(i) delete []array[i]; delete []array;    多次析构

    5.动态 int* array = new int[m][n];  delete []array;      数组按行存储

    三、多维数组

      int* array = new int[m][3][4];    只有第一维可以是变量,其他维数必须是常量,否则会报错

          delete []array;       必须进行内存释放,否则内存将泄漏

    四、数组作为函数形参传递

             一维数组传递:

    1. void func(int* array);
    2. void func(int array[]);  
    3. 二维数组传递:  
      1. void func(int (*array)[n]);
      2.  void func(int** array);

    数组名作为函数形参时,在函数体内,其失去了本身的内涵,仅仅只是一个指针,而且在其失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。

    五、字符数组

    char类型的数组被常委字符数组,在字符数组中最后一位为转移字符''(也被成为空字符),该字符表示字符串已结束。在C++中定义了string类,在Visual C++中定义了Cstring类。

    字符串中每一个字符占用一个字节,再加上最后一个空字符。如:

    char array[10] = "cnblogs";

    虽然只有7个字节,但是字符串长度为8个字节。

    也可以不用定义字符串长度,如:

    char array[] = "cnblogs";


    memset()函数使用方法

  • 相关阅读:
    .NET XmlNavigator with Namespace
    编程要素
    【FOJ】1962 新击鼓传花游戏
    【POJ】1389 Area of Simple Polygons
    【POJ】2482 Stars in Your Window
    【HDU】3265 Posters
    【HDU】1199 Color the Ball
    【HDU】3642 Get The Treasury
    【HDU】4027 Can you answer these queries?
    【HDU】1542 Atlantis
  • 原文地址:https://www.cnblogs.com/inception6-lxc/p/9350669.html
Copyright © 2011-2022 走看看