`

[转]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语言(编写程序最佳参考资料)

    11.4 结构变量的赋值. 4 11.5 结构变量的初始化. 5 11.6 结构数组的定义. 5 11.7 结构指针变量的说明和使用. 7 11.7.1 指向结构变量的指针. 7 11.7.2 指向结构数组的指针. 9 11.7.3 结构指针变量作函数参数. ...

    ANSYS经典入门培训教程.pptx

    怎样定义数组 对字符数组, 不能以图形方式填充字符串 使用 "="命令键入值,接着用 *STAT 显示字符串 每个字符串必须用单引号括起来 例如: dofs(1) = 'ux', 'uy', 'uz', 'rotx', 'roty', 'rotz' *stat,dofs 2007 数组...

    深入解析C++中的字符数组和处理字符串的方法

    C++字符数组 用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一...上面定义了c为字符数组,包含10个元素。在赋值以后数组的状态如图所示。 对字符数组进行初始化,最容易理解的方式是逐个字符赋给数组中

    C语言中二维数组作为函数参数来传递的三种方法

    主要给大家介绍了关于C语言中二维数组作为函数参数来传递的三种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用C语言有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    C语言程序设计-指针与字符串.pptx

    用字符串常量为字符指针初始化,其形式与字符数组的初始化类似,却有本质上的区别:字符数组获得字符串所有的字符,而字符指针获得字符串首地址,与字符串内的字符无关。 【例8.4】用指向字符串的指针变量完成两个...

    微软 C#语言参考 CHM格式

    2.5.5 Unicode 字符转意字符序列... 51 3. 基本概念... 53 3.1 声明 53 3.2 成员 55 3.2.1 名称空间成员... 55 3.2.2 结构成员... 55 3.2.3 枚举成员... 55 3.2.4 类成员... 56 3.2.5 接口成员... 56 3.2.6 数组成员...

    9.第九章 数组.txt

    给数组赋值有两种方法:赋值语句对数组元素逐个赋值,初始化赋值。初始化赋值指在数组定义时给数组元素赋予初值。 数组初始化是在编译阶段进行的,可以减少运行时间,提高效率。 初始化赋值的形式: 类型说明符 ...

    VC++基础视频教程100讲

    教程描述:本教程详细介绍了C/C++的相关知识,共100讲,包括最基本的C,C++,VC环境的安装配置及顺序,判断,循环、if与switch条件分支语句、一维数组的概念、二维数组、字符数组(字符串)、函数分类等各类语法,本教程...

    WinCC PRO V16使用C脚本给变量赋值的具体方法.docx

    WinCC PRO V16使用C脚本给变量赋值的具体方法

    Lua中文教程(pdf版)

    4.1 赋值语句.18 4.2 局部变量与代码块(block)......19 4.3 控制结构语句...........20 Programming in Lua iv Copyright ® 2005, Translation Team, www.luachina.net 4.4 break和return语句......23 第5...

    C 语言中声明字符串数组

    当在已经初始化的数组中存储字符串值时,不允许使用赋值运算符,应使用特殊的内存复制函数,如 strcpy。 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LENGTH 100 #define NUM_...

    第三章JAVA 中的数组及字符串.doc

     其它与C语言中的数组概念相同,包括利用数组下标赋值、取值以及内存中的存储方式等。  与C语言不同,数组也是类(对象),有许多方法可调用(如长度等) 二:多维数组(二维数组)  定义:int two[][]=new ...

    宋劲彬的嵌入式C语言一站式编程

    6. 字符类型与字符编码 3. 简单函数 1. 数学函数 2. 自定义函数 3. 形参和实参 4. 全局变量、局部变量和作用域 4. 分支语句 1. if语句 2. if/else语句 3. 布尔代数 4. switch语句 5. 深入理解函数 1. return语句 2. ...

    77G 22套C语言 C++ 数据结构 程序设计视频课程合集 C丨C++相关学习视频全套视频教程

    13.C语言字符串的缺点.mp4 14.MCU_51_结构.mp4 15.MCU_51_结构数组_结构与函数.mp4 16.API_数据结构.mp4 17.时间信息.mp4 18.文件属性和时间.mp4 19.遍历目录.mp4 20.递归目录.mp4 21.系统信息.mp4 22....

    c语言设计Brian W. Kernighan Dennis M. Ritchie

    1.9 字符数组 1.10 外部变量与作用域 第2章 类型、运算符与表达式 2.1 变量名 2.2 数据类型与大小 2.3 常量 2.4 说明 2.5 算术运算符 2.6 关系运算符与逻辑运算符 2.7 类型转换 2.8 加一与减一运算符 ...

    你必须知道的495个C语言问题(PDF)

    回指向字符的指针的函数的指针的数组? . . . . . . . . . . . . . . 3 1.8 函数只定义了一次, 调用了一次, 但编译器提示非法重定义了。. . 4 1.9 main() 的正确定义是什么? void main() 正确吗? . . . . . . . . ...

    线程按指定顺序输出字符到数组的实例代码

    有三个线程,线程1的功能就是向字符数组输出A,线程2的功能就是向字符数组输出B,线程2的功能就是向字符数组输出C,要求按顺序向数组赋值ABCABCABC,ABC的个数由线程函数1的参数指定。 接口说明: void Init(); //...

    IOS开发之路–C语言数组和字符串

    而在C语言中是没有String类型的,那么如果要表示一个字符串,就必须使用字符串数组。今天主要就介绍如下三个方面: 一维数组 多维数组 字符串 一维数组 一维数组操作比较简单,但是需要注意,数组长度必须是固定的...

    Linux c编程一站式学习

    2.4. 赋值......................................................20 2.5. 表达式....................................................21 2.6. 字符类型与字符编码........................................24 第...

    Solaris 动态跟踪指南

    赋值运算符.......................................................................................................................................... 50 递增和递减运算符 ..................................

Global site tag (gtag.js) - Google Analytics