`
yfy_cpp
  • 浏览: 12701 次
  • 来自: 南昌
最近访客 更多访客>>
社区版块
存档分类
最新评论

C++中关于字符串数组与字符串常量(转)

阅读更多
原文地址:http://blog.csdn.net/code_bomber/article/details/1862327
今天遇到了好多问题,从内存到字符串。。。上网查了些资料,现在就字符串数组和字符串常量来做个总结吧。其实也就是char  sz[] = "string"; 和char *psz = "string";  这两种字符串的赋值之间的区别。

首先来说说
char  sz[] = "string"; 

这条语句,该语句是按照数组的形式来一个个存放的,编译器将其解释为
char   sz[] = {'s','t','r','i','n','g','/0'}; 

如果在函数内部出现的话,这几个字符将存放在堆栈中,所以不是字符串常量。

再来说说
char *psz = "string"; 

这条语句,该语句定义了一个指向"string"字符串的指针,并没有空间存放"string"字符串,显然把“string”当做字符串常量并存放在常量区是最合适的选择。并且语句 psz[4] = 'x'; 在编译时不会报错,执行时会产生异常,原因是“string”存放在只读存储区,不可以修改。这和C++中 const char *psz = "string";一句是一样的,所以最好显示的加上const关键字从而让编译器检测出“修改常量“错误。
分享到:
评论

相关推荐

    C#将字符串数组传递给C++ DLL.rar

    本主题聚焦于如何在C#应用中有效地传递字符串数组给C++ DLL,特别是使用MFC(Microsoft Foundation Classes)库的情况。在Visual Studio 2010环境下,开发者经常需要解决这个问题,以便实现不同语言和库之间的无缝...

    C++第4章_数组与指针(C++课件,中南大学)

    这种结构在处理命令行参数时很有用,因为命令行参数通常以字符串数组的形式提供。 最后,引用于C++中是一个特殊的类型,它作为别名使用,引用一旦初始化后就必须始终引用同一个对象。引用不是独立的对象,而是现有...

    C++中字符串以及数组和指针的互相使用讲解

    需要注意的是,字符串常量不能被修改,而字符数组可以。 接下来,我们探讨一下数组和指针的关系。 在C++中,**数组与指针**有着紧密的联系。数组名实际上是一个指向数组首元素的指针。这意味着,当你有一个数组`...

    计算机程序设计(C++):C++之字符数组和字符串.doc

    需要注意的是,printf和scanf函数处理字符串数组的特点是直接使用数组名作为参数。例如: printf("%s\n",ary1); 这种直接使用数组名的用法,使得程序更加简洁和高效。 字符数组和字符串是C++中两个非常重要的概念...

    字符数组与字符指针

    - **字符指针:** 指向字符串常量的指针不能修改字符串内容,但可以改变指针指向不同的字符串。 3. **操作示例:** - **字符数组:** ```c++ char string[] = "Hello, world!"; strcpy(string, "Goodbye!"); ...

    c++中字符串的介绍

    // 定义一个二维字符数组,通常称这样的数组为字符串数组 3. 字符串的初始化 字符串的初始化同普通数组一样,字符数组也允许在定义的时候直接初始化,例如:char name[10] = {'J', 'a', 's', 'o', 'n'}; 同样,...

    C++习题 6数组与指针

    - **数组名与指针常量**:数组名在表达式中自动转换为指向数组第一个元素的指针常量。 - **不可改变的地址**:数组名中存放的地址是不可改变的,所以数组名称为指针常量。 - **丢失的数组信息**:使用数组名作为指针...

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

    在C++编程语言中,字符数组和字符串处理是至关重要的概念。字符数组是用于存储字符数据的数组,每个数组元素可以存储一个字符。由于字符串在实际应用中的广泛性,...理解这两者的区别和用法是掌握C++字符串处理的关键。

    数组和字符串.ppt数组和字符串.ppt数组和字符串.ppt数组和字符串.ppt

    字符串常量存储在字符串池中,通过`""`创建的字符串会被自动加入到池中。 **5.2.6 正则表达式** Java支持正则表达式,可以使用`Pattern`和`Matcher`类进行匹配、替换和查找操作。 总结,数组和字符串是Java编程的...

    (资料大全加程序)C++ 字符串之间的相互转化 宽字符与多字符集(LPTSTR、LPCSTR、LPCTSTR、LPSTR)

    在C++编程中,字符和字符串的处理是至关重要的,特别是在处理不同的字符集时,如宽字符和多字符集。标题和描述中提到的关键概念包括LPTSTR、LPCSTR、LPCTSTR和LPSTR,这些都是在Windows API中常见的字符串类型指针。...

    C++自定义string字符串类

    在C++编程中,`std::string`是一个非常重要的类,用于处理文本字符串。然而,有时为了特定的需求或教学目的,我们可能需要自定义一个类似于`std::string`的字符串类。这个自定义的字符串类,如文件名所示的`MyString...

    C++课程课件数组(郭艳燕老师)

    5. **字符数组与字符串处理**:C++中字符数组常用于存储字符串,因为C++标准库提供了处理字符串的方法,如`std::string`类,可以方便地进行字符串操作。 引入数组的概念和使用,可以简化程序设计,减少变量数量,...

    字符串与指针

    4. **字符串修改**:虽然可以通过指针来修改字符串,但是直接修改字符串常量(如`char *str = "Hello"; str[0] = 'h';`)会导致未定义行为,应该避免这样做。 ### 总结 通过对以上代码的详细分析,我们可以看出,...

    学习C++指向字符数组的指针

     记住:在cout和多数C++表达式中,char数组名、指向char的指针以及用引号括起来的字符串常量都被解释为字符串第一个字符的地址.  5、无法使用string对象初始化char指针,但是string类提供了一个名为c_str的成员...

    C++Primer第五版 第3章 字符串变量和数组(练习解答)

    2. **C风格字符串**:了解如何声明和使用C风格字符串,包括`char*`指针和`const char*`指针,以及如何处理字符串常量。 3. **字符串比较**:使用`, `, `>`, `>=`, `==`, `!=`等运算符比较字符串,以及`std::string`...

    C++编写的字符串源代码

    1. **字符串基础知识**:在C++中,字符串通常以字符数组的形式存在,可以是字符数组常量(如`"hello"`)或动态分配的字符数组。C++标准库中的`std::string`类提供了更为方便和强大的字符串操作功能,如拼接、查找、...

    C++C字符串总结.pdf

    2. 使用字符串常量初始化:这种方式会将结束符`\0`一同存储在数组中。例如:`char panic[6]={"HELLO"};` 或 `char panic[]="HELLO";` 在这种情况下,如果指定了数组长度,长度应大于或等于初始化字符串的长度,多余...

    C++字符串完全指南 两篇译文 透彻解析

    - 字符数组与字符串常量的交互:字符串常量是不可变的,不能直接修改。 2. **std::string类**: - 创建与初始化:可以通过构造函数创建,如`std::string str("Hello");`或`std::string str = "Hello";` - 操作:...

    字符串和字符数组PPT学习教案.pptx

    【字符串和字符数组】在C++编程中是基础且重要的概念。字符串是由一串字符组成的序列,通常以双引号括起,例如"Hello, world"。在内存中,C++将字符串存储为连续的字符序列,每个字符占据一个字节,并在字符串的末尾...

Global site tag (gtag.js) - Google Analytics