zoukankan      html  css  js  c++  java
  • C#数组和指针

    转至http://www.csharpwin.com/csharpspace/3576r8158.shtml

    C#数组还是比较常用的,于是我研究了一下C#数组和指针,在这里拿出来和大家分享一下,希望对大家有用。

    C#数组和指针

    1。C#数组和vector的区别在于,C#数组的长度是固定的。C#数组一经创建,就不允许动态的修改长度。指针可以像迭代器一样用于遍历和检索C#数组中的元素。现代C++程序应该尽量使用vector和迭代器类型,而避免使用低级的C#数组和指针。只有在强调速度时,才在类实现的内部使用C#数组和指针。

    2。C#数组的缺陷在于没有size()操作,也就是程序员无法知道一个给定C#数组的长度。如果需要更改C#数组的长度,就必须再声明一个更大的C#数组,把原来C#数组的内容copy到新C#数组中去。

    3。引用不能定义C#数组。没有所有元素都是引用的C#数组。

    4。非const变量和要到运行阶段才知道值的const变量都不能用作C#数组定义的维数。

    1. const unsigned buf_size = 512;  
    2. // const 变量.  
    3. int staff_size = 217;   
    4. // 非const变量.  
    5. const unsigned sz = get_size();   
    6. // 运行时才确定的const变量.  
    7. char buf1[buff_size]; // ok.  
    8. char buf2[buff_size + 1];   
    9. // ok, 常量计算表达式.  
    10. double salaries[staff_size];  
    11. // error, 非const变量做维数.  
    12. int test_rest[sz];  
    13. // error, 运行时才确定的const变量.  

    5。默认初始化。
    在函数外定义的内置类型C#数组,元素都初始化0。函数内定义的内置类型C#数组,元素都无初始化过程。如果是类类型的C#数组,无论在哪里定义,都调用默认构造函数初始化。

    6。显示初始化。

    1. int ia[3] = {0, 1, 3};  
    2. char ca1[] = {’c’, ’+’, ’+’};  
    3. char ca2[] = {’c’, ’+’, ’+’, ’\0’}; [Page]  
    4. char ca3[] = "c++";/
    5. / ca3和ca2有相同的维数和初始化值,含有四个元素.  
    6. char ca4[3] = "c++"
    7. // 这会产生一个编译错误,因为"c++"是一个长度为4的字符串.  
    8. string str_arr[3] = {"hi", "heipi"}; 
    9. // str_arr[2]是一个值为空的string类型元素.  

    7。与vector不同,一个C#数组不能用另外一个C#数组初始化,也不能将一个C#数组赋值给另一个C#数组。个别编译器扩展功能,支持C#数组复制,但是如果希望编写的程序能在不同的编译器上运行,应该避免这类应用。

  • 相关阅读:
    [POI2013]BAJ-ytecomputer [动态规划]
    【2019.10.15】网课 Za
    【初赛】
    [NOI2014]魔法森林[最短路 spfa]
    【洛谷2019金秋营模拟赛1】
    【luogu1315】 观光公交[贪心]
    【luogu4450】收集邮票 [期望dp]
    [HAOI2012]高速公路 [线段树 期望]
    ALGO-185 Trash Removal
    精度计算——减法
  • 原文地址:https://www.cnblogs.com/liuliu-NoGirl/p/4647474.html
Copyright © 2011-2022 走看看