- 浏览: 283154 次
- 性别:
文章分类
最新评论
在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中结构体
2013-01-09 15:47 616把结构体保存到文件中,用fwrite()函数: fwrite ... -
关于socket编程中基本函数介绍
2012-11-03 13:57 1032源自:http://blog.sina.com.cn/s/bl ... -
C中需要注意的小问题
2012-09-27 08:59 8131.在用scanf()函数读入double型数值时要用%lf的 ... -
指针和多维数组
2011-12-26 10:03 813摘自:《C primer plus》 指针和多位数组 ... -
C中<ctype.h>库
2011-12-19 20:21 718标准库<ctype.h> 1 ... -
C中double类型数据的输入和输出
2011-12-19 10:04 12393double a; scanf(" ... -
C中printf()和scanf()函数说明
2011-12-16 19:58 1589下面是对printf()和scanf()函数的说明: ... -
C中转义序列及其含义
2011-12-15 20:27 973转义序列: 序列 ... -
C中各数据类型取值范围
2011-12-15 19:31 13891.标准头文件<limits.h>中包含了 ... -
C中常用的类型转换函数
2011-12-14 17:34 816源自:http://hi.baidu.com/hao_%BF% ... -
C语言格式化输出系统时间
2011-12-14 17:04 5932源自:http://blog.csdn.net/jiadeli ... -
C中目标代码文件,可执行文件和库
2011-12-14 10:19 1955C编程的基本策略是使用程序将源代码文件转换为可执行 ... -
vs2008下vc的库函数及头文件存放位置
2011-12-13 22:14 4570在写C/C++程序时总会在开头包含一些头文件,如:#inclu ... -
malloc()函数
2011-12-12 17:35 0待写 -
用C写的模拟掷骰子程序
2011-12-12 16:47 2345整理自:《C Primer Plus》第五版 此程序包 ... -
C中字符串的输入输出及相关函数
2011-12-27 21:59 3842//本节内容摘自对Stephen Prata的《C Prime ... -
指针的基本操作以及关于指针的注意事项
2011-12-11 17:42 916一. 指针的基本操作有:赋值(assignment),求值(v ... -
关于*与++的优先级
2011-12-11 16:53 1723C中一元运算符*和++具有相等的优先级,但它们在结合时是从右向 ... -
C中关于数组参数的传递
2011-12-09 11:43 921编写一个对数组进行操作的函数,目的是返回数组内所用元素的和。 ... -
C中有关数组的说明
2011-12-09 11:10 788下面介绍一下关于数组的一些说明: 在数组声明时必须 ...
相关推荐
第二个程序定义了一个reverse函数,该函数使用指针p来实现字符串的反转,并使用temp变量来交换字符串中的字符。 知识点总结 1. C语言中的指针是一种数据类型,用于存储内存中的地址。 2. 在C语言中,字符串可以...
在main函数中,我们使用了四种方法来计算字符串长度,并将结果输出到控制台。 ```c void main() { char a[81]; cout请输入字符串:"; gets(a); cout字符串长度是:"(a); cout字符串长度是:"(a); cout字符串...
以下是对几种常见的C语言字符串函数的深入解析及其实现方式。 #### 1. 字符串反转 - strRev 字符串反转是常见的字符串操作之一,主要用于改变字符串的顺序。在C语言中,可以通过多种方式实现字符串的反转,包括但...
本文将深入探讨几种在C#中分割字符串的方法,包括使用`Split()`方法、利用正则表达式进行分割,以及一些高级用法。 ### 使用Split()方法 `Split()`方法是最基础也是最常用的字符串分割方式。它接受一个字符数组...
`cgets()`函数在某些环境中(如Turbo C)被用于从标准输入读取一行字符串,但在标准C库中并未定义,因此在标准环境下,我们通常使用`fgets()`替代。 `cgets()`的使用方式类似于`gets()`,但它会保留末尾的换行符。...
从给定的文件标题“字符串转换为计算公式的若干种方法”及描述“个人收集的几种将字符串表达式转换为计算公式的方法”中,我们可以看出文章主要探讨的是如何将文本形式的数学表达式(字符串)转化为可以进行计算的...
中心对称字符串的判断通常可以通过以下几种方法实现: 1. **反转法**:将字符串分为两部分,一部分是前半部分,另一部分是从中心开始到末尾的后半部分。如果这两部分通过反转后相等,则字符串是中心对称的。例如,...
在这个程序中,我们定义了一个`CountChineseCharacters`方法,通过遍历字符串的每个字符并使用`CharUnicodeInfo.GetUnicodeCategory`来获取字符的Unicode类别。如果类别是`UnicodeCategory.OtherLetter`,那么这个...
总之,上述示例提供了一种简单有效的方法来计算一个子字符串在另一个字符串中出现的次数。这种方法适用于多种场景,包括但不限于文本处理、数据清洗等。通过对代码的深入理解和适当修改,可以使其适应更多复杂的字符...
**回文**是一种特殊的字符串,它从前向后读和从后向前读都是一样的。例如,“madam”、“racecar”等都是回文字符串。回文检测是计算机科学中的一个经典问题,广泛应用于文本处理、密码学等领域。 #### 二、C#语言...
### 字符串与字符型量详解 #### 一、引言 在计算机编程领域,字符型量是一个重要的基本数据类型,用于存储单个字符。它包括了字符常量和字符变量两种形式。本文将深入探讨字符型量的概念、特点以及在C语言中的应用...
根据给定的信息,我们可以深入探讨如何在C语言中实现字符串的连接功能。下面将详细介绍几种不同的方法,并对每种方法的实现原理、优缺点进行分析。 ### 方法一:使用自定义函数实现 #### 代码示例 ```c #include ...
在数据结构领域,字符串是一种特殊的数据结构,通常用于表示文本信息。在这个名为“字符串连接实验...通过这个实验,学生可以加深对C语言字符串操作和动态内存管理的理解,这对于开发更复杂的数据结构和算法至关重要。
本文将对几种经典的字符串匹配算法进行详细介绍,并通过具体实例帮助读者理解每种算法的工作原理及其优势。 #### 二、基本概念与术语 在正式介绍之前,我们先定义一些基本概念: - **主串** (Text):待搜索的文本。...
最后,jieQu方法返回截取后的字符串,并在main方法中通过调用jieQu方法,传入特定的字符串和长度值,输出最终截取的结果。 总结来说,处理包含中文的字符串截取问题,不能仅仅依赖于字符串级别的操作,而需要对字节...
在这个PPT学习教案中,主要讲解了C语言字符串的一些关键知识点。 首先,字符串常量在内存中占据的空间包括了所有字符加上一个额外的'\0'终止符。例如,字符串"abcd"在内存中占用5个字节,其中4个字节用于存储字符'a...
本文将深入探讨VC++中的几种主要字符串类型,包括`CString`、`BSTR`、`LPCTSTR`以及它们之间的关系和区别,同时也将涉及如何在这些类型之间进行转换。 #### CString:一个动态的TCHAR数组 `CString`是MFC...
本文将通过一个具体的例子——使用C语言实现字符串的反向输出,来深入理解递归的基本概念及其应用。 #### 一、递归基础 递归(Recursion)是指在一个函数的定义或执行过程中直接或间接地调用自身的一种方法。递归...
它允许我们定义模式来匹配、搜索、替换和提取字符串中的特定部分。例如,`^\\d{3}-\\d{2}-\\d{4}$`可以匹配美国电话号码格式。 5. 文件读取与处理:在`TestStrMessage处理坐标字符串`这个例子中,可能涉及从文件中...
在标签中提到的“字符串加密”,MD5虽然能将字符串转化为不可逆的哈希值,但并不等同于加密。加密是双向的,有解密过程,而哈希是单向的,无法还原原始输入。所以,MD5更适用于验证数据完整性而非保密性。 在文件名...