温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C语言中字符串的定义方法

发布时间:2021-08-18 11:12:10 来源:亿速云 阅读:203 作者:chen 栏目:web开发

本篇内容介绍了“C语言中字符串的定义方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在C中定义字符串有下列几种形式:字符串常量,char数组,char指针

1.字符串常量

即:位于一对双括号中的任何字符。双引号里的字符加上编译器自动提供的结束标志\0字符,作为

一个字符串存储在内存中。如:printf("%s","hello"); //"hello"

如果字符串文字中间没有间隔或间隔的是空格符,ANSI  C 会将其串联起来。例:

char greeting[50] = "hello,and" "how are" "you";

等价于:

char greeting[50] = "hello,and how are you";

字符串常量属于静态存储类。静态存储是指如果在一个函数中使用字符串常量,即使是多次调用了这个函数,

该字符串在程序的整个运行过程中只存储一份。整个引号的内容作为指向该字符串存储位置的指针。这一点与

把数组名作为指向数组存储位置的指针类似。

2.字符串数组及其初始化

初始化例子:

char m[40] = "hello,world";  //定义字符串数组时必须指定数组大小(整型常量),在指定大小时,要确保数组的大小比预定的大一个,因为编译器会自动添加'\0'。

//多余的元素会初始化为'\0'

char m={'h','e','l','\0'};  //注意标志结束的空字符,若没有它,得到的只是一个字符数组而不是字符串

3.利用char指针定义字符串

char *m = "hello,world"; //自动添加'\0'

注意:此时字符串指针m指向字符串常量,不成用*(m+1)='o'修改此常量,因为这个字符串常量放在常量区不能被修改

4.数组和指针

数组形式和指针形式有什么不同呢?

数组形式: char m[40] = "hello,world";

指针形式: char *m = "hello,world";

数组形式:

编译器会把数组名m看作是数组首元素的地址&m[0]的同义词,m是个地址常量。可以用m+1来标识数组里的下一个元素,但不能使用++m,增量运算符只能在变量前使用, 而不能在常量前使用。

m[40]在计算机内存中被分配一个有40个元素的数组(其中每个元素对应一个字符,还有一个附加的元素对应结束的空字符'\0')。每个元素都被初始化为相应的字符。

通常,被引用的字符串存储在可执行文件的数据段部分;当程序被加载到内存中时,字符串也被加载到内存中,把被引用的字符串复制到数组中

指针形式:

指针形式(*m)也会在静态存储区为字符串预留空间。此外,一旦程序开始执行,还要为指针变量m另外预留一个存储位置,以在该指针变量中能够存储字符串的地址。

m指向字符串的第一个字符,可用++m指向第二个字符。  指针m是个变量。

“C语言中字符串的定义方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI