`

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是个变量。    



























 

0
0
分享到:
评论

相关推荐

    C语言指针实现字符串的反转

    第二个程序定义了一个reverse函数,该函数使用指针p来实现字符串的反转,并使用temp变量来交换字符串中的字符。 知识点总结 1. C语言中的指针是一种数据类型,用于存储内存中的地址。 2. 在C语言中,字符串可以...

    求字符串长度几种方法

    在main函数中,我们使用了四种方法来计算字符串长度,并将结果输出到控制台。 ```c void main() { char a[81]; cout请输入字符串:"; gets(a); cout字符串长度是:"(a); cout字符串长度是:"(a); cout字符串...

    各种C语言字符串函数-笔试面试必备

    以下是对几种常见的C语言字符串函数的深入解析及其实现方式。 #### 1. 字符串反转 - strRev 字符串反转是常见的字符串操作之一,主要用于改变字符串的顺序。在C语言中,可以通过多种方式实现字符串的反转,包括但...

    C#分割字符串的几种方法

    本文将深入探讨几种在C#中分割字符串的方法,包括使用`Split()`方法、利用正则表达式进行分割,以及一些高级用法。 ### 使用Split()方法 `Split()`方法是最基础也是最常用的字符串分割方式。它接受一个字符数组...

    C语言下 字符串翻转程序

    `cgets()`函数在某些环境中(如Turbo C)被用于从标准输入读取一行字符串,但在标准C库中并未定义,因此在标准环境下,我们通常使用`fgets()`替代。 `cgets()`的使用方式类似于`gets()`,但它会保留末尾的换行符。...

    字符串转换为计算公式的若干种方法

    从给定的文件标题“字符串转换为计算公式的若干种方法”及描述“个人收集的几种将字符串表达式转换为计算公式的方法”中,我们可以看出文章主要探讨的是如何将文本形式的数学表达式(字符串)转化为可以进行计算的...

    判断字符串是否中心对称

    中心对称字符串的判断通常可以通过以下几种方法实现: 1. **反转法**:将字符串分为两部分,一部分是前半部分,另一部分是从中心开始到末尾的后半部分。如果这两部分通过反转后相等,则字符串是中心对称的。例如,...

    用户输入一个字符串后,判断该字符串中包含几个汉字

    在这个程序中,我们定义了一个`CountChineseCharacters`方法,通过遍历字符串的每个字符并使用`CharUnicodeInfo.GetUnicodeCategory`来获取字符的Unicode类别。如果类别是`UnicodeCategory.OtherLetter`,那么这个...

    如何判断字符串的个数

    总之,上述示例提供了一种简单有效的方法来计算一个子字符串在另一个字符串中出现的次数。这种方法适用于多种场景,包括但不限于文本处理、数据清洗等。通过对代码的深入理解和适当修改,可以使其适应更多复杂的字符...

    判断字符串是否回文

    **回文**是一种特殊的字符串,它从前向后读和从后向前读都是一样的。例如,“madam”、“racecar”等都是回文字符串。回文检测是计算机科学中的一个经典问题,广泛应用于文本处理、密码学等领域。 #### 二、C#语言...

    字符串 介绍 字符串 介绍

    ### 字符串与字符型量详解 #### 一、引言 在计算机编程领域,字符型量是一个重要的基本数据类型,用于存储单个字符。它包括了字符常量和字符变量两种形式。本文将深入探讨字符型量的概念、特点以及在C语言中的应用...

    c用c语言编写一个函数,连接两个字符串

    根据给定的信息,我们可以深入探讨如何在C语言中实现字符串的连接功能。下面将详细介绍几种不同的方法,并对每种方法的实现原理、优缺点进行分析。 ### 方法一:使用自定义函数实现 #### 代码示例 ```c #include ...

    字符串连接实验(数据结构)

    在数据结构领域,字符串是一种特殊的数据结构,通常用于表示文本信息。在这个名为“字符串连接实验...通过这个实验,学生可以加深对C语言字符串操作和动态内存管理的理解,这对于开发更复杂的数据结构和算法至关重要。

    单字符串匹配算法总结,有好几种方法的说明

    本文将对几种经典的字符串匹配算法进行详细介绍,并通过具体实例帮助读者理解每种算法的工作原理及其优势。 #### 二、基本概念与术语 在正式介绍之前,我们先定义一些基本概念: - **主串** (Text):待搜索的文本。...

    截取如下字符串“java程序教程”的前5个字节,字符串应该为“java程”,截取前6个字符,字符串也应该为“java程”,程序实现之.

    最后,jieQu方法返回截取后的字符串,并在main方法中通过调用jieQu方法,传入特定的字符串和长度值,输出最终截取的结果。 总结来说,处理包含中文的字符串截取问题,不能仅仅依赖于字符串级别的操作,而需要对字节...

    C语言字符串PPT学习教案.pptx

    在这个PPT学习教案中,主要讲解了C语言字符串的一些关键知识点。 首先,字符串常量在内存中占据的空间包括了所有字符加上一个额外的'\0'终止符。例如,字符串"abcd"在内存中占用5个字节,其中4个字节用于存储字符'a...

    关于VC++的字符串

    本文将深入探讨VC++中的几种主要字符串类型,包括`CString`、`BSTR`、`LPCTSTR`以及它们之间的关系和区别,同时也将涉及如何在这些类型之间进行转换。 #### CString:一个动态的TCHAR数组 `CString`是MFC...

    递归实现字符串反向输出

    本文将通过一个具体的例子——使用C语言实现字符串的反向输出,来深入理解递归的基本概念及其应用。 #### 一、递归基础 递归(Recursion)是指在一个函数的定义或执行过程中直接或间接地调用自身的一种方法。递归...

    字符串处理

    它允许我们定义模式来匹配、搜索、替换和提取字符串中的特定部分。例如,`^\\d{3}-\\d{2}-\\d{4}$`可以匹配美国电话号码格式。 5. 文件读取与处理:在`TestStrMessage处理坐标字符串`这个例子中,可能涉及从文件中...

    MD5加密字符串生成密码

    在标签中提到的“字符串加密”,MD5虽然能将字符串转化为不可逆的哈希值,但并不等同于加密。加密是双向的,有解密过程,而哈希是单向的,无法还原原始输入。所以,MD5更适用于验证数据完整性而非保密性。 在文件名...

Global site tag (gtag.js) - Google Analytics