1.数组,C++中不允许数组的下标值为变量,只能是常量或者常量表达式,必须先定义后使用。
数组赋初值几种常见方式:
  int a[] = {1,2,3,4,5};
  int a[4] = {2,1,3,4};
  int a[4] = {1,2},其余默认为0;
  或者:int a[2];a[0] = 1,a[1] = 2;

2.二维数组:
  int a[2][3] = {{1,2,3},{4,5,6}};
  int a[2][3] = {1,2,3,4,5,6};
  int a[2][3] = {{1}{2}};
  int a[][3] = {1,2,3,4,5,6,};
  inr a[3][3] = {{1,2},{},{3,4,5}};

3.数组作参数:
  数组元素作参数,与普通变量做参数一样;
  数组名作参数,传递的是数组的地址,形参形式:
  一维数组: int max(int array[]);
  int max(int array[4]);
  即可指明大小,也可不指明,只是用来接收数组的起始地址而已,需说明:实参传进来时,数组的起始地址与形参的起始地址一样,所以用数组名做参数,可以改变数组内值的大小,即传值传址,如果是其他的一般变量,只能传值,不能改变原实参的值。

  二维数组:int min(int array[][10]);
  int min(int array[3][10]);
  即必须指明列数,因为二维数组是按行在内存中存储的,要让编译器知道列,才能知道行.第二维的大小应与实参的二维大小大小一样,第一维无关紧要,编译器不检查。

4.字符数组:
  char xiao_min[12] = {'I',' ','am',' ','happy'};//想起了一个女孩,就用xiao_min了吧
  此字符数组长度为12,而存放的字符串"I am happy"的长度为10,另外两个字符被默认置为'\0','\0'作为字符串的终止符,所以这个字符串占11字节。所以在存放字符串时,字符数组的长度要大于字符串的最大长度,因为还要存放一个用于判断字符串结束的符号'\0'啊!'\0'只是一个用于识别的标志,并不会添加什么操作。

  所以给字符串数组也可以这样赋值:
  char xiao_min[] = {"I love you!"};亦或者
  char xiao_min[] = "I love you!";
  编译时,会自动在最后添加一个'\0'以识别字符串是否终止,所以以上字符串占的内存要加上一个‘\0’所占的1个字节。

5.字符数组输入输出:
  一维:
  cin >>xiao_min;
  cout <<xiao_min;
  输入China 保存'C h i n a \0'
  输出'China' 遇'\0'停止输出

二维:
  for(i=0;i<10;i++)
  cin >>xiao_min[i];

6.字符串函数(在cstring或者string.h):
  a.字符串连接函数strcat():函数原型:strcat(char[],const char[]); const:保证字符串在调用过程中不被修改,连接后将第二个数组的值紧跟到第一个数组值后面,省略第一个数组的字符串末尾的‘\0’。

  b.字符串赋值函数strcpy():函数原型:strcpy(char[],const char[]);将第二个数组的内容复制到第一个数组中,第一个数组中的数据被覆盖,第二个数组中的'\0'也会被复制。第二个参数也可以是字符串:strcpy(xiao_min,"I love you");还可以这样用strcpy(xiao_min,str2,2);即将str2的前两个字符复制到xiao_min字符数组中。
所以可以利用这个函数,给字符数组赋值字符串(仅能使用此方法给字符数组赋字符串的值)。

  c.字符串比较函数:strcmp();函数原型:strcmp(const char[],const char[]);对比的既可以是数组,也可以是字符串。返回结果:
  str1=str2 -> 0
  str1>str2 -> 正整数
  str1<str2 -> 负整数
比较规则:从左到右,按ascii码比较,直到遇见'\0'为止,全部字符一样=》相等,有不同,按第一个不同处来比较,之后不看。
注意:
  if(str1>str2) return 0;//这是对字符串数组的地址进行比较
  if(strcmp(str1>str2)) return 0;//这才是比较字符串

  d.字符串长度strlen();函数原型strlen(const char[]);返回的是字符串的真实长度,不包括'\0'在内
  例: char xiao_min[20]="You are my world!";
  cout <<strlen(xiao_min); //输出值为17
以上都是C中保留的(只是为了与C兼容)。以上方法统称C-string方法

7.(建议使用->string方法)C++中处理字符串:字符串类(Gcc string占4个字节 VC++ 16字节)
  #include<string>
  string str1 = "China";//对比字符串数组是不允许这样的:char c[10];c = "China";cuo wu.
  string str2 = "Xiaomin";
  str1 = str2;
  str1[0] = 'c';//此时str1="china" 注意字符串常量赋值给字符串变量时,不会将常量的结束符'\0'复制过去

字符串输入输出:
  直接使用字符串变量名:
  cin >>str;
  cout <<str;

字符串运算:
赋值:=
连接:+
比大小:>,<,==,!=,>=,<=

还可声明字符串数组:
  string xiao_min[3] = {"I ","love ","you"}; //每个字符串此时已不含'\0'
  string name[5]; sizeof(name) =>20字节

C++学习笔记(三)--数组、字符串的更多相关文章

  1. Scala入门学习笔记三--数组使用

    前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...

  2. PHP学习笔记之数组篇

    摘要:其实PHP中的数组和JavaScript中的数组很相似,就是一系列键值对的集合.... 转载请注明来源:PHP学习笔记之数组篇   一.如何定义数组:在PHP中创建数组主要有两种方式,下面就让我 ...

  3. Java IO学习笔记三

    Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...

  4. 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记

    回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...

  5. angular学习笔记(三十一)-$location(2)

    之前已经介绍了$location服务的基本用法:angular学习笔记(三十一)-$location(1). 这篇是上一篇的进阶,介绍$location的配置,兼容各版本浏览器,等. *注意,这里介绍 ...

  6. angular学习笔记(三十一)-$location(1)

    本篇介绍angular中的$location服务的基本用法,下一篇介绍它的复杂的用法. $location服务的主要作用是用于获取当前url以及改变当前的url,并且存入历史记录. 一. 获取url的 ...

  7. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  8. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  9. JavaScript学习笔记之数组(二)

    JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...

  10. angular学习笔记(三十)-指令(10)-require和controller

    本篇介绍指令的最后两个属性,require和controller 当一个指令需要和父元素指令进行通信的时候,它们就会用到这两个属性,什么意思还是要看栗子: html: <outer‐direct ...

随机推荐

  1. C# asp.net XML格式的字符串显示不全

    前台显示XML字符串显示不全 后台XML字符串使用<xmp></xmp>将XML格式字符串括起来

  2. FFmpeg从入门到出家(HEVC在RTMP中的扩展)

    由金山云视频云技术团队提供:FFmpeg从入门到出家第三季: 为推进HEVC视频编码格式在直播方案中的落地,经过CDN联盟讨论,并和主流云服务厂商达成一致,规范了HEVC在RTMP/FLV中的扩展,具 ...

  3. Vue —— You may use special comments to disable some warnings. Use // eslint-disable-next-line to ignore the next line. Use /* eslint-disable */ to ignore all warnings in a file.问题

    方法1: 在build/webpack.base.conf.js文件中,找到module->rules中有关eslint的规则,注释或者删除掉就可以了 module: { rules: [ // ...

  4. 第三讲JdbcRealm及Authentication Strategy

    1.使用shiro框架来完成认证工作,默认情况下使用的是IniRealm.如果需要使用其他Realm,那么需要进行相关的配置. 2.ini配置文件讲解: [main] section是你配置应用程序的 ...

  5. python在类中使用__slot__属性

    在类中定义__slot__属性来限制实例的属性字段,在创建大量对象的场合可以减少内存占用. 创建大量对象是内存占用对比: 类中不使用__slot__ class MySlot:def __init__ ...

  6. uniq 去除重复行

    1.命令功能 uniq可以输出或忽略文件中的重复行,经常需要使用sort先对文件进行排序,然后使用uniq去重并计数. 2.语法格式 uniq  option  input uniq   选项    ...

  7. AOP技术介绍--(AOP技术基础)

    2.1 AOP技术起源        AOP技术的诞生并不算晚,早在1990年开始,来自Xerox Palo Alto Research Lab(即PARC)的研究人员就对面向对象思想的局限性进行了分 ...

  8. 在MySQL登录时出现Access denied for user 'root'@'localhost' (using password: YES) 拒绝访问,并可修改MySQL密码

    这两天装了一个mysql 5.7数据库,但是在本地dos登陆不上去,报错Access denied for user 'root'@'localhost'(using password:YES): 也 ...

  9. luogu2046 海拔

    题目链接[NOI2010]海拔 首先有个性质就是海拔只会有\(0\)和\(1\)两种. 证明:海拔下降和人数乘积为总消耗,确定了海拔下降总数,如果有个地方可以使得单位消耗最小,那么全部消耗不会更劣. ...

  10. 转 Java中wait和sleep方法的区别

    1.两者的区别 这两个方法来自不同的类分别是Thread和Object 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法(锁代码块和方法锁). wait ...