admin 管理员组

文章数量: 887021


2023年12月16日发(作者:澳大利亚对杜克)

1 我定义一个字符数组: char a[12];

a="null"; 错误.

*a="null"; 错误;

又如果定义 char *a;

a="null"; 正确 .

*a="null"; 错误;

这些是基本的概念,你一定要弄懂:

char a[12]; //定义了一个字符数组,数组名称为a,这个时候,a是一个指针,并且是常量类型,在整个数组生存期内其值都是不可改动的。

a = "null"; //这个时候,a是一个常量指针,指向数组的首地址,他的值在数组的生存期都是不可改变的。现在把一个字符串赋值给他,当然是不行的。

*a = "null"; //a本身是一个常量指针,指向数组的首地址,对他进行解引用,得到一个字赋值,此时把一个字符串常量的首地址赋值给他,这个比较无厘头,不谈了。

char *a; //定义了一个字符指针。

a = "null"; //把一个字符串常量赋值给他,也就是把常量"null"的首地址赋值给a,正确。

*a = "null"; //a是一个字符指针,对他进行解引用后,得到的必然是一个单个字符值,把一个字符常量的首地址付给这个字赋值,这个也同样无厘头。

2 C++字符串处理库(标准库)中常用的字符串操作函数

函 数 原 型

char *strcpy(char *s1 ,const char *s2)

char *strncpy(char *s1,const char *s2, n)

char *strcat(char *s1,const char *s2)

char *strncat(char *s1,const char *s2, n)

int strcmp(const char *s1,const char *s2)

int strncmp(const char *s1,const char *s2,n)

函 数 说 明

将字符串s2复制到字符数组s1中,返回s1的值

将字符串s2中最多n个字符复制到字符数组s1中,返回s1的值

将字符串s2添加到字符串s1后面。s2的第一个字符覆盖s1的NULL终止符。返回s1的值

将字符串s2中最多n个字符添加到字符串s1后面。s2的第一个字符覆盖s1的NULL终止符。返回s1的值

比较字符串s1与字符串s2。当函数在s1等于、小于或大于s2时,分别返回0、小于0或大于0的值

比较字符串sl中的前n个字符与字符串s2。当函数在s1的前n个字符等于、小于或大于s2时,分别返回0、小于0或大于0的值

int strlen(const char *s)

确定字符串长度,返回NULL终止符之前的字符数

strcpy(数组1,数组2)将数组2复制到数组1中

strcat(字符数组1,字符串2)将字符串2复制连接在字符数组1

strcmp(字符串1,字符串2)比较两字符串的大小,相等时返回0

strupr(字符串)将字符串中小写字母改为大写的

strlwr(字符串)将字符串中大写字母改为小写的

strlen(字符串)求长度

3 指针与字符串

 使用字符数组的形式:

char pString[]="I love China!";

 直接用字符型指针的形式:

char *cString="I love China!";

 注意:

(1) char*型指针变量可以在定义时进行初始化,其形式为

char *指针变量名=“字符串”;

(2) char*型的指针变量(或函数参数)既可以用于接收字符串常量,也可以接收字符型数组。例如:

char pString[]="I love China!";

char *myString="This is a string.";

myString=pString;

4 指向数组元素的指针

 声明与赋值

例: int a[10], *pa;

pa=&a[0]; //或 pa=a;

 通过指针引用数组元素

– 经过上述声明及赋值后:

*pa就是a[0],*(pa+1)就是a[1],... ,*(pa+i)就是a[i].

a[i], *(pa+i), *(a+i)都是等效的。

– 不能写 a++,因为a是数组首地址是常量。

5 在程序运行过程中,值不能被改变的量称为常量。

常量分为:

 整型常量 : 包括正整数、负整数和零

其表示形式:十进制、八进制、十六进制

 实型常量 :以文字形式出现的实数,C++中实数就是浮点数

其表示形式:一般形式 指数形式

 字符常量 :用单引号括起来的一个字符

 字符串常量 :是用一对双引号括起来的字符序列

 布尔常量 :只有两个false(假)和true(真)

例如:3,4.5,‘A’,”123”,false和true

6 常量定义格式为:

例如:const float pi=3.1415926;//正确

const float Pi;

Pi= 3.1415926; //错误

注意:定义常量的主要目的是防止在程序中对该值的改变。常量值在程序运行过程中不允许改变,所以常量在定义时必须初始化。

7 数组的定义与使用

数组是一个由多个同类型变量组成的集合

<类型> <数组名>[<常量表达式>][[<常量表达式>]…];

说明:

(1)数组名必须是标识符。数组名是一个常量,代表数组元素在内存中的起始地址。〈常量表达式〉必须是整形,枚举型或字符型。

(2)〈常量表达式〉必须在编译时确定,因此表达式不能是变量或含有变量。

(3)数组元素是按顺序连续地存储在内存中的。

例如:char a[10]; //定义字符数组a,有10个字符型变量

int b[‘a’]; //定义整型数组b,有97个整型变量

int element[2][3]; /*定义二维数组element ,有2行3

列,共6个整型变量*/

例如:int size=10;

int s[size]; //错误,size为变量

改为:const int size=10; //可在size前加上const使其变为常量

int s[size]; //正确

说明:

数组定义时如不指明元素个数,则必须在初始化的花括号中指明初始元素的每一个值,否则在编译是会出错!

注意:

(1)允许将一个结构体变量作为一个整体赋值给另一个同类型结构体变量。

struct date day1={2001,12,14};

struct date day2;

day2=day1;

(2)不允许将两个结构体变量做整体比较,只能逐个成员比较

If(day1==day2) //错误

If(==) //正确


本文标签: 数组 常量 字符串 字符 变量