`

[转]C字符数组赋值 .

阅读更多

举例如下:

char a[10];
1、定义的时候直接用字符串赋值
char a[10]="hello";
注意:不能先定义再给它赋值,如
 char a[10];
 a[10]="hello";
这样是错误的!

2、对数组中字符逐个赋值
char a[10]={'h','e','l','l','o'};

3、利用strcpy
char a[10];
strcpy(a, "hello");

易错情况:
1、char a[10]; a[10]="hello";//一个字符怎么能容纳一个字符串?况且a[10]也是不存在的!
2、char a[10]; a="hello";//这种情况容易出现,a虽然是指针,但是它已经指向在堆栈中分配的10个字符空间,现在这个情况a又指向数据区中的hello常量,这里的指针a出现混乱,不允许!

还有:不能使用关系运算符“==”来比较两个字符串,只能用strcmp() 函数来处理。


C语言的运算符根本无法操作字符串。在C语言中把字符串当作数组来处理,因此,对字符串的限制方式和对数组的一样,特别是,它们都不能用C语言的运算符进行复制和比较操作。直接尝试对字符串进行复制或比较操作会失败。例如,假定str1和str2有如下声明:

char str1[10], str2[10];

利用=运算符来把字符串复制到字符数组中是不可能的:

str1 = "abc";     /*** WRONG ***/

str2 = str1;       /*** WRONG ***/

C语言把这些语句解释为一个指针与另一个指针之间的(非法的)赋值运算。但是,使用=初始化字符数组是合法的:

char str1[10] = "abc";

这是因为在声明中,=不是赋值运算符。

试图使用关系运算符或判等运算符来比较字符串是合法的,但不会产生预期的结果:

if (str1==str2) ...    /*** WRONG ***/

这条语句把str1和str2作为指针来进行比较,而不是比较两个数组的内容。因为str1和str2有不同的地址,所以表达式str1 == str2的值一定为0。

http://blog.csdn.net/jphaoren/article/details/5803583

 

分享到:
评论

相关推荐

    C语言字符数组初始化

    ### C语言字符数组初始化详解 #### 一、字符数组的定义与初始化 在C语言中,字符数组是一种非常重要的数据结构,主要用于存储一系列字符。字符数组的定义与初始化是掌握其使用的基础。以下是对字符数组定义及初始...

    C语言字符数组初始化.pdf

    "C语言字符数组初始化" 在C语言中,字符数组的初始化是非常重要的,以下是关于字符数组初始化的知识点: 1. 字符数组的定义与初始化 字符数组的初始化可以通过逐个字符赋给数组元素来实现,例如:`char str[10]={...

    C语言字符串数组.pdf

    在C语言中,字符串是一种特殊的字符数组,它们以空字符'\0'作为结束标识。本文主要探讨了C语言中字符数组的定义、初始化以及字符串的表示形式。 首先,字符数组的定义与初始化是通过声明一个字符类型(char)的数组来...

    C语言教学课件:13-3_字符数组.ppt

    字符数组的定义、使用、初始化和赋值是理解C语言字符串处理的关键。 1. **字符数组的定义**: 定义字符数组的方式与其他数组相同,例如`char line[1000];`声明了一个能存储1000个字符的数组,但通常用于存储字符串...

    matlab数组赋值的多种方法

    "Matlab 数组赋值的多种方法" Matlab 作为一款功能强大的科学计算软件,对数组的操作是其核心功能之一。数组赋值是 Matlab 中最基本的操作之一,对于数组的赋值有多种方法,本文将详细介绍 Matlab 数组赋值的多种...

    大一c语言数组实验心得.docx

    本文档主要介绍了 C 语言数组的实验心得,包括一维数组和二维数组的定义、赋值和输入输出的方法,字符数组和字符串函数的使用,以及与数组有关的算法特别是排序算法。通过实验和实践,掌握了数组的使用方法,并对...

    c语言数组习题.pdf

    - 在C语言中,字符数组赋值需要使用花括号包围字符,例如`char x[1] = {'a'}`,而不是`char x[1] = 'a'`。 - 自动变量(char x[1])不能在定义时直接初始化,应使用花括号包围初值,如`auto char x[1] = {'0'}`。 -...

    C语言实验报告《数组》.doc

    本实验报告的主要目的是让学生掌握C语言中的一维和二维数组的定义、赋值和输入输出,字符数组和字符串数组的使用,以及与数组有关的排序算法。 一、数组的定义和赋值 在C语言中,数组是一种数据结构,用于存储一组...

    一维字符数组.zip

    在编程领域,一维字符数组是基础且重要的数据结构,特别是在C/C++等语言中。它是一种线性存储结构,可以看作是字符类型的数组,用于存放一系列的字符。本项目"一维字符数组.zip"可能是一个教学示例或者代码实践,...

    C语言字符数组与字符串的使用详解[归类].pdf

    C语言字符数组与字符串的使用详解 C语言中,字符数组和字符串是两个紧密相关的概念。字符数组是指由多个字符组成的数组,而字符串则是指一个以`\0`结尾的字符序列。在C语言中,字符串可以看作是一个特殊的字符数组...

    C语言教程之数组讲解.ppt

    数组元素可以是整数、浮点数、字符等,数组名是用来标识数组的唯一标识符。数组的声明方式为:数据类型 数组名[常量表达式];其中,常量表达式指定了数组的长度。 一维数组的定义 一维数组是最基本的数组类型,它...

    c语言多维数组.pdf

    9. 字符数组的赋值: 使用`strcpy()`函数可以将一个字符串的内容复制到另一个字符串数组中。 10. 字符数组的边界问题: 在使用字符数组处理字符串时,需要注意数组的边界和溢出问题,确保不会读取或写入超出数组...

    C语言第讲指针与字符串字符数组PPT课件.pptx

    【C语言指针与字符串字符数组】 在C语言中,指针和字符串是密不可分的概念,它们在处理字符数据时发挥着重要作用。本部分主要讲解了如何利用指针操作字符串,以及字符数组与字符串之间的关系。 首先,C语言通过...

    C语言第14讲一维数组举例及字符数组.ppt

    对于字符数组,初始化字符串时需要注意末尾的空字符`\0`,例如`char str[6] = {'C', 'h', 'i', 'n', 'a', '\0'}`。 4. **实际应用示例**: - 求多个数的最大值:可以定义一个数组存储这些数,通过循环比较找到最大...

    实验4数组1.docx

    * 掌握字符数组与字符串的使用方法,理解字符数组与其他数组的区别,理解字符串及其特点。 二、实验目的: * 掌握数组的基本概念和使用方法。 * 掌握字符数组与字符串的使用方法。 * 掌握与数组相关的算法,包括...

    C语言数组PPT.ppt

    * 对字符数组的操作:连接、复制、比较 五、实践作业 * 作业1:从键盘输入20个数到m数组,将下标为0、2、4……的元素赋值给数组n,输出n中的内容。 * 作业2:产生10个[50,90]上的随机整数,求其中能被5整除的数的...

Global site tag (gtag.js) - Google Analytics