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()函数使用方法

  • 相关阅读:
    vue中的 computed 和 watch 的区别
    mysql8.0 初始化数据库及表名大小写问题
    sql server alwayson 调整数据文件路径
    zabbix 自定义监控 SQL Server
    mysql 创建用户及授权
    mysql 设置从库只读模式
    mysql8.0 主从复制安装及配置
    centos8.0安装mysql8.0
    centos8替换阿里数据源
    npm publish 报错 【you or one of your dependencies are requesting a package version that is forbidden by your security policy】
  • 原文地址:https://www.cnblogs.com/inception6-lxc/p/9350669.html
Copyright © 2011-2022 走看看