写一下刷题时关于C++数组方面的知识点,一些关于数组题的解析整理
前言
在学习C/C++或者其他编程语言时,数组和指针还是很重要的,下面把之前记笔记记下来的数组知识整理一下,方便大家直观简单的理解数组知识
带入实例吧
一、数组是整哪样的?
【假装这里有个表情包】
像其他编程语言一样,C++中的数组是一组具有连续内存位置的类似类型的元素。 在C++中 std ::array 是一个封装固定大小数组的容器。 在C++中,数组索引从0开始!
(相关概念大家自己去百度吧,,,,,,,,,其他博主的概念写的挺不错的)
但是 [ but ] 这篇文章是整理错题知识点的!!!!知道概念意义不大,毕竟都是中文,谁都看得懂,能带入实例,实题中才是好的。
【开始】…连接成功……正在加载内容中……连接大佬题后解析成功
二、一维数组
- 静态 int array[999]; 定义了数组array,并未对数组进行初始化
- 静态 int array[999] = {2,13}; 定义并初始化了数组array
- 动态 int* array = new int[999];
- delete []array; 分配了长度为999的数组array
- 动态 int* array = new int[999](80,23);
- delete []array; 为长度为999的数组array初始化前两个元素
三、二维数组
- 静态 int array[99][99]; 定义了数组,并未初始化
- 静态 int array[66][66] = { {1,1} , {2,2} }; 数组初始化了array[0][0,1]及array[1][0,1]
- 动态 int (*array)[n] = new int[m][n]; delete []array;
- 动态 int** array = new int*[m];
- for(i) array[i] = new int[n];
- for(i) delete []array[i];
- delete []array; 多次析构
- 动态 int* array = new int[m][n];
- delete []array; 数组按行存储
四、***数组
- int* array = new int[m][3][4]; only第一维可以是变量,其他维数必须是常量,否则会报错
- delete []array; 必须进行内存释放,否则内存将泄漏!!-->[来自未知大佬的建议!记得释放内存]
五、数组作为函数形参传递
1、一维数组传递:
- void func(int array[]);
- void func(int* array);
2、二维数组传递:
- void func(int (*array)[n]);
- void func(int** array);
注:数组名作为函数形参时,在函数体内数组名自动退化为指针,失去其常量特性,可以自增、自减,可以修改
六、字符数组
1、其定义的一般形式是:char 数组名[数据长度]
2、char类型的数组常为字符数组,在字符数组中最后一位为转移字符'\0'(也被成为空字符),该字符表示字符串已结束。在C++中定义了string类,在Visual C++中定义了Cstring类。
3、字符串中每一个字符占用一个字节,再加上最后一个空字符。如:
- char array[10] = "abcdefj";
- 虽然只有7个字节,但是字符串长度为8个字节。
也可以不用定义字符串长度,如:
- char array[] = "abcdefj";
4、字符数组也可以是二维或多维数组,例如:
- char c[5][10];
七、小知识点
[做了题你就知道了……]
- 对数组名进行 sizeof,获取的是数组的字节大小,sizeof(testArray[0]) 是获取第一个元素的字节大小,两者相除得到的是数组元素的个数
- strlen 是函数,sizeof 是运算符。
- C++ 中 sizeof 是运算符,作用于字符串表示测量字符串所占的内存大小,包括最后的 '\0'。
- 而 strlen 是函数,用于计算字符串的长度,不包括最后的 '\0'。
总结
看懂了吗,看懂了理解了吗?去找点题做了看看!或者自己写点代码运行运行
看到这了,点个赞,打赏打赏再走
燕子~燕子~点个赞