c++数组的学习
2016-05-17 20:50
465 查看
简单的数组的定义和初始化就不说了,比较简单,把自己比较容易虎的地方记下来,供以后复习(参考的谭浩强的C++程序设计)
1. 数组定义时,数组的大小应该是一个常量,而且数组的引用只能引用其中某个元素,不能引用整个数组。
2.不能对数组进行整体赋值
int a={1,2};
int b=;
b=a; //这是错误的,不能对数组进行整体赋值
3.数组名作为函数的参数:
数组名只作为数组首元素的地址,并不代表数组中全部元素,所以将数组作为参数传递给函数,是将实参数组的首元素的地址传给形参,并不是把首元素的值传给函数
(变量作为函数参数,只能将实参变量的值传给形参)
需要注意的是形参数组并不真正分配存储单元,只是用array[ ]的形式表示参数是一个数组,所以array[ ]方括号内的数值没有实际作用,所以形参是一维数组时,大小可以写,也可以不写
二维数组作为函数参数时可以不指定第一维的大小,但是必须指定第二维的大小,且与实参的第二维的数目相同(二维数组也可以看作若干一维数组)
4.字符数组
只能对字符数组的元素赋值,不能对整个数组赋值,在声明的时候初始化可以
char c[5]={'a','b','c','d','e'}; //正确
char b[5]="Chin"; //正确,因为C++规定字符串结束的标志是‘\0’,对字符串常量,系统自动加[b]‘\0’作为结束符
[/b]
char c[5];
c={'a','b','c','d','e'}; //错误,可以理解成字符数组的名字是常量,不能被赋值,不能做左值
char b[5]="China"; //错的,字符串实际上大小是6
char a[5];
cin>>a; //注意输入的字符数要小于数组的大小
要用一个字符串赋值给一个字符数组,可以用strcpy()函数
比较字符串的大小,要用strcmp()函数
strlen是测试字符串的实际长度,不包括字符‘\0’
5. 字符串处理
string不是基本数据类型,可以直接进行赋值,关系运算符操作等,但是字符数组不能,要用strcat,strcmp等函数
一维字符数组智能存放一个字符串,而字符串数组可以包含很多个字符串,而且每个字符串元素只包含字符串本身不包含'\0'
看书上说sizeof(string)是4,但是在自己电脑上是32,看了这个博客知道了,不同的库对string的实现是不同的,也就是string大小也是不同的
链接如下
sizeof和sizeof(string)的问题 - wanghetao - 博客园 http://www.cnblogs.com/wanghetao/archive/2012/04/04/2431760.html
1. 数组定义时,数组的大小应该是一个常量,而且数组的引用只能引用其中某个元素,不能引用整个数组。
2.不能对数组进行整体赋值
int a={1,2};
int b=;
b=a; //这是错误的,不能对数组进行整体赋值
3.数组名作为函数的参数:
数组名只作为数组首元素的地址,并不代表数组中全部元素,所以将数组作为参数传递给函数,是将实参数组的首元素的地址传给形参,并不是把首元素的值传给函数
(变量作为函数参数,只能将实参变量的值传给形参)
需要注意的是形参数组并不真正分配存储单元,只是用array[ ]的形式表示参数是一个数组,所以array[ ]方括号内的数值没有实际作用,所以形参是一维数组时,大小可以写,也可以不写
二维数组作为函数参数时可以不指定第一维的大小,但是必须指定第二维的大小,且与实参的第二维的数目相同(二维数组也可以看作若干一维数组)
4.字符数组
只能对字符数组的元素赋值,不能对整个数组赋值,在声明的时候初始化可以
char c[5]={'a','b','c','d','e'}; //正确
char b[5]="Chin"; //正确,因为C++规定字符串结束的标志是‘\0’,对字符串常量,系统自动加[b]‘\0’作为结束符
[/b]
char c[5];
c={'a','b','c','d','e'}; //错误,可以理解成字符数组的名字是常量,不能被赋值,不能做左值
char b[5]="China"; //错的,字符串实际上大小是6
char a[5];
cin>>a; //注意输入的字符数要小于数组的大小
要用一个字符串赋值给一个字符数组,可以用strcpy()函数
比较字符串的大小,要用strcmp()函数
strlen是测试字符串的实际长度,不包括字符‘\0’
5. 字符串处理
string不是基本数据类型,可以直接进行赋值,关系运算符操作等,但是字符数组不能,要用strcat,strcmp等函数
一维字符数组智能存放一个字符串,而字符串数组可以包含很多个字符串,而且每个字符串元素只包含字符串本身不包含'\0'
看书上说sizeof(string)是4,但是在自己电脑上是32,看了这个博客知道了,不同的库对string的实现是不同的,也就是string大小也是不同的
链接如下
sizeof和sizeof(string)的问题 - wanghetao - 博客园 http://www.cnblogs.com/wanghetao/archive/2012/04/04/2431760.html
相关文章推荐
- C++第6次上机实验
- 关于学习C++过程中需要的知识点拓展
- 多态和友元
- C++课程 second work _1025
- MZ test17# NOIP模拟题 # T4 第4题 路线统计(route.cpp/pas)[key:矩阵]
- 马兴150809305C语言的指针、链表的原理和各类操作
- 1.C++--关于文件间共享代码的方法
- 二分查找算法
- 大数相加 C/C++
- House Robber II
- C++第6次上机作业
- House Robber
- 设计模式之装扮模式(C++实现)
- Java和C++的虚函数的异同
- 分数加减的简单运算
- 杭电 2054(指针 strchr函数)
- C语言实现电话本 动态开辟 信息存储于文件
- C语言中经常遇到的陷阱!好东西
- C++开学第二次作业(5.14)
- stm8中断使用