C++学习笔记(三)

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字节

时间: 2024-09-29 23:30:40

C++学习笔记(三)的相关文章

Caliburn.Micro学习笔记(三)----事件聚合IEventAggregator和 Ihandle&lt;T&gt;

Caliburn.Micro学习笔记(三)----事件聚合IEventAggregator和 Ihandle<T> 今天 说一下Caliburn.Micro的IEventAggregator和IHandle<T>分成两篇去讲这一篇写一个简单的例子 看一它的的实现和源码 下一篇用它们做一个多语言的demo 这两个是事件的订阅和广播,很强大,但用的时候要小心发生不必要的冲突. 先看一下它的实现思想 在Caliburn.Micro里EventAggregator要以单例的形式出现这样可以

OpenCV for Python 学习笔记 三

给源图像增加边界 cv2.copyMakeBorder(src,top, bottom, left, right ,borderType,value) src:源图像 top,bottem,left,right: 分别表示四个方向上边界的长度 borderType: 边界的类型 有以下几种: BORDER_REFLICATE # 直接用边界的颜色填充, aaaaaa | abcdefg | gggg BORDER_REFLECT # 倒映,abcdefg | gfedcbamn | nmabcd

NFC学习笔记——三(在windows操作系统上安装libnfc)

本篇翻译文章: 这篇文章主要是说明如何在windows操作系统上安装.配置和使用libnfc. 一.基本信息 1.操作系统: Windows Vista Home Premium SP 2 2.硬件信息: System: Dell Inspiron 1720 Processor: Intel Core 2 Duo CPU T9300 @ 2.5GHz 2.5GHz System type: 32-bit Operating System 3.所需软件: 在windows操作系统上安装软件需要下列

swift学习笔记(三)关于拷贝和引用

在swift提供的基本数据类型中,包括Int ,Float,Double,String,Enumeration,Structure,Dictionary都属于值拷贝类型. 闭包和函数同属引用类型 捕获则为拷贝.捕获即定义这些常量和变量的原作用域已不存在,闭包仍然可以在闭包函数体内引用和修改这些值 class属于引用类型. Array的情况稍微复杂一些,下面主要对集合类型进行分析: 一.关于Dictionary:无论何时将一个字典实例赋给一个常量,或者传递给一个函数方法时,在赋值或调用发生时,都会

加壳学习笔记(三)-简单的脱壳思路&amp;调试思路

首先一些windows的常用API: GetWindowTextA:以ASCII的形式的输入框 GetWindowTextW:以Unicaode宽字符的输入框 GetDlgItemTextA:以ASCII的形式的输入框 GetDlgItemTextW:以Unicaode宽字符的输入框 这些函数在使用的时候会有些参数提前入栈,如这函数要求的参数是字符串数目.还有大小写啦之类的东西,这些东西是要在调用该函数之前入栈,也就是依次push,就是说一般前面几个push接着一个call,那前面的push可能

【Unity 3D】学习笔记三十四:游戏元素——常用编辑器组件

常用编辑器组件 unity的特色之一就是编辑器可视化,很多常用的功能都可以在编辑器中完成.常用的编辑器可分为两种:原有组件和拓展组件.原有组件是编辑器原生的一些功能,拓展组件是编辑器智商通过脚本拓展的新功能. 摄像机 摄像机是unity最为核心组件之一,游戏界面中显示的一切内容都得需要摄像机来照射才能显示.摄像机组件的参数如下: clear flags:背景显示内容,默认的是skybox.前提是必须在render settings 中设置天空盒子材质. background:背景显示颜色,如果没

马哥学习笔记三十二——计算机及操作系统原理

缓存方式: 直接映射 N路关联 缓存策略: write through:通写 write back:回写 进程类别: 交互式进程(IO密集型) 批处理进程(CPU密集型) 实时进程(Real-time) CPU: 时间片长,优先级低IO:时间片短,优先级高 Linux优先级:priority 实时优先级: 1-99,数字越小,优先级越低 静态优先级:100-139,数据越小,优先级越高 实时优先级比静态优先级高 nice值:调整静态优先级   -20,19:100,139   0:120 ps

lucene学习笔记(三)

好几天没更新了.更新一下,方便自己和大家学习. 这是最基本的代码 package index; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document;

python 学习笔记 三 字典

字典 Python的高效的key/value哈希表结构叫做"dict", dict的内容可以写成一系列的key:value对并放入{ }中, 相当于: dict = {key1:value1, key2:value2, ...}, 一个空的字典就是俩个大括号{ }. 下面是从一个空字典创建字典以及一些关键点: 数字, 字符串和元组可以作为字典的key, value可以是任何类型(包括字典). ## Can build up a dict by starting with the the

3. 蛤蟆Python脚本学习笔记三字符串

3. 蛤蟆Python脚本学习笔记三字符串 本篇名言:"平静的湖面只有呆板的倒映,奔腾的激流才有美丽的浪花!幸福不是靠别人来布施,而是要自己去赢取!生命的意义在不断挑战自己,战胜自己!" 这个本来放在昨天的,由于昨晚又太晚了,所以就搁在这里了.赶紧看看吧. 字符串两边都用双引号或者单引号包起来.否则就使用转移符号来转移一下. 输入在一起可以直接拼接. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48112507