栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

字符数组(C语言)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

字符数组(C语言)

字符数组

我们开始在printf 函数参数中用过的字符串实际上是一个元素为字符的数组。例如,一个字符串“Hello” 实际上由‘H’,‘e’,‘l’,‘l’,‘o’ 这 五个字母字符与一个空字符 构成。
任何字符串的内部表示都会以空字符‘’ 作为结尾,所以很多时候我们写程序会通过检查空字符的方式找到字符串的结尾。
运行一下程序,你会发现它和我们直接去用printf(“Hello”); 输出时并没有什么结果上的区别。
看到一个这么复杂的给字符数组初始化的方式,

char string[] = {'H','e','l','l','o',''};

其实,在C语言中,提供了一种字符数组初始化的简化方式。请你将声明和初始化数组的语句改为:

char string[] = "Hello";
  1. 你可以再运作一下程序,看一看输出的结果是不是也是一样的呢?
    既然string 这个字符串 实际上是一个字符数组,我们就应该可以修改它中间任何一个字符。
    请在输出语句之后,通过赋值语句修改字符串string 的首位字符为w.
#include 

int main() {
    // char string[] = {'H', 'e', 'l', 'l', 'o', ''};
    char string[] = "Hello";
    printf("%sn", string);
    string[0] = 'w';
    printf("%sn",string);
    return 0;
}

  1. 现在我们已经将字符串string 的首位字符修改为了 w, 请通过printf(“%s”, string ); 再次输出string 的值。
  2. 这样我们就更明确的解释
char string = "Hello";

与

char string[] = {'H','e','l','l','o',''}; 

的等价性了。

字符串与字面量

我们在前面的课程中学习的“字符串”实际上是被更为严谨地称为 字符串字面量(string literal) 。它在我们写的程序中表现为一对双引号包裹的 0 个或多个字符。例如"Hello"和""都是符合定义的的字符串字面量。
字面量(literal) 并非仅包含字符串字面量,我们在之前的程序设计过程中,已经大量使用了它。
例如

int a;
a = 1234;

这个语句中的1234其实就是一个整数型字面量,在这个赋值过程中,我们实际上是将一个整数型字面量的值放入了一个整数型变量中作为值。

在字面量后,我们往往会增加一个后缀标记类型。

  • 长类型(long)字面量,我们会加一个l或L,例如1234L。
  • 无符号字面量(unsigned)以字母u或U作为后缀,例如345U。
  • 后缀f或F则用于标记单精度浮点型(float)字面量,例如3.14F或1e-2f。不增加后缀的浮点型字面量均为双精度浮点型(double)字面量。
另一种字符串
#include 

int main() {
    char string[] = "Hello";
    printf("%sn", string);
    char *string2 = "Hello";
    printf("%sn", string2);
    printf("%pn",&string);
    printf("%pn",string2);
    printf("%pn",&"Hello");
    return 0;
}

除了用字符数组去存储字符串,我们还可以声明一个用存储字符地址的变量操作字符串。
请在现在已经给出的代码中输出语句后写下:

char *string = "Hello";
printf("%sn",string2);

运行一下程序,你不难发现,第二种写法的输出结果和第一种字符数组的没有什么区别。
但是,它们的工作原理是不同的, char *string = “Hello”; 的写法实际上在 String2 这个变量中保存了 “Hello” 这个字符串字面量在程序运行时在内存中的地址。
同时,请注意,因为“Hello” 是一个字符串字面量,所以我们没有办法直接通过string 2 来对字符串做修改的。
接下来请在return 0; 前输入:

#include 

int main() {
    char string[] = "Hello";
    printf("%sn", string);
    char *string2 = "Hello";
    printf("%sn", string2);
    printf("%pn",&string);
    printf("%pn",string2);
    printf("%pn",&"Hello");
    return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/920286.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号