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. sobel算法的Soc FPGA实现之框架分析(二)

    重点分析一.AXI_VDMA_1 之前一直认为这个就是内含有DDR的ip核(......最近才搞懂是个啥),后来经过对FDMA的分析发现这就是个框架,通AXI总线挂载到bus总线,可以实现PL端FPG ...

  2. .linux基础命令三

    一. 两台服务器免密登录: 1. 生成密钥 ssh-keygen的命令手册,通过”man ssh-keygen“命令查看指令: 通过命令”ssh-keygen -t rsa“创建一对密匙,包括公匙和私 ...

  3. vue v-model 的使用

    Vue的核心特性之一是双向绑定,vue的响应式原理是实现了数据->视图 v-bind只能实现数据的单向绑定 ,从M自动绑定到V 使用v-model 可以实现表单元素的双向绑定,且只能应用到表单元 ...

  4. Vue 实现一个分页组件

    实现分页组件要分三个部分 样式,逻辑,和引用 首先新建一个vue文件用来承载组件内容 第一步:构建样式 <template> <nav> <ul class=" ...

  5. 二gradle创建SSM项目——Hello word

    一创建gradle web项目 1.以下是我的项目结构web工程+工具module,mapper用来存放mybatis-plus自动生成类,通过 MpGenerator.class 生成.   项目结 ...

  6. spring boot 加载指定xml

    方法一:使用@ImportResource 方法二:在test中 @ContextConfiguration(locations = "classpath:spring-profile.xm ...

  7. Codeforces917E

    //#include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #i ...

  8. Linux 部署或升级openssh7.5p1

    运维Linux系统,部署或升级openssh是经常面临的事,以下已redhat6和redhat7为例. 在redhat6中部署openssh会有什么坑,在编辑openssh源码包时会报一些类似的错误, ...

  9. mvn 打包排除test

    mvn clean package compile -Dmaven.test.skip=true

  10. GNU linker script,ld script,GNU链接脚本

    https://blog.csdn.net/itxiebo/article/details/50937412 https://blog.csdn.net/itxiebo/article/details ...