原文地址:
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,特别是使用MFC(Microsoft Foundation Classes)库的情况。在Visual Studio 2010环境下,开发者经常需要解决这个问题,以便实现不同语言和库之间的无缝...
这种结构在处理命令行参数时很有用,因为命令行参数通常以字符串数组的形式提供。 最后,引用于C++中是一个特殊的类型,它作为别名使用,引用一旦初始化后就必须始终引用同一个对象。引用不是独立的对象,而是现有...
需要注意的是,字符串常量不能被修改,而字符数组可以。 接下来,我们探讨一下数组和指针的关系。 在C++中,**数组与指针**有着紧密的联系。数组名实际上是一个指向数组首元素的指针。这意味着,当你有一个数组`...
需要注意的是,printf和scanf函数处理字符串数组的特点是直接使用数组名作为参数。例如: printf("%s\n",ary1); 这种直接使用数组名的用法,使得程序更加简洁和高效。 字符数组和字符串是C++中两个非常重要的概念...
- **字符指针:** 指向字符串常量的指针不能修改字符串内容,但可以改变指针指向不同的字符串。 3. **操作示例:** - **字符数组:** ```c++ char string[] = "Hello, world!"; strcpy(string, "Goodbye!"); ...
// 定义一个二维字符数组,通常称这样的数组为字符串数组 3. 字符串的初始化 字符串的初始化同普通数组一样,字符数组也允许在定义的时候直接初始化,例如:char name[10] = {'J', 'a', 's', 'o', 'n'}; 同样,...
- **数组名与指针常量**:数组名在表达式中自动转换为指向数组第一个元素的指针常量。 - **不可改变的地址**:数组名中存放的地址是不可改变的,所以数组名称为指针常量。 - **丢失的数组信息**:使用数组名作为指针...
在C++编程语言中,字符数组和字符串处理是至关重要的概念。字符数组是用于存储字符数据的数组,每个数组元素可以存储一个字符。由于字符串在实际应用中的广泛性,...理解这两者的区别和用法是掌握C++字符串处理的关键。
在C++编程中,字符和字符串的处理是至关重要的,特别是在处理不同的字符集时,如宽字符和多字符集。标题和描述中提到的关键概念包括LPTSTR、LPCSTR、LPCTSTR和LPSTR,这些都是在Windows API中常见的字符串类型指针。...
在C++编程中,`std::string`是一个非常重要的类,用于处理文本字符串。然而,有时为了特定的需求或教学目的,我们可能需要自定义一个类似于`std::string`的字符串类。这个自定义的字符串类,如文件名所示的`MyString...
5. **字符数组与字符串处理**:C++中字符数组常用于存储字符串,因为C++标准库提供了处理字符串的方法,如`std::string`类,可以方便地进行字符串操作。 引入数组的概念和使用,可以简化程序设计,减少变量数量,...
4. **字符串修改**:虽然可以通过指针来修改字符串,但是直接修改字符串常量(如`char *str = "Hello"; str[0] = 'h';`)会导致未定义行为,应该避免这样做。 ### 总结 通过对以上代码的详细分析,我们可以看出,...
记住:在cout和多数C++表达式中,char数组名、指向char的指针以及用引号括起来的字符串常量都被解释为字符串第一个字符的地址. 5、无法使用string对象初始化char指针,但是string类提供了一个名为c_str的成员...
2. **C风格字符串**:了解如何声明和使用C风格字符串,包括`char*`指针和`const char*`指针,以及如何处理字符串常量。 3. **字符串比较**:使用`, `, `>`, `>=`, `==`, `!=`等运算符比较字符串,以及`std::string`...
1. **字符串基础知识**:在C++中,字符串通常以字符数组的形式存在,可以是字符数组常量(如`"hello"`)或动态分配的字符数组。C++标准库中的`std::string`类提供了更为方便和强大的字符串操作功能,如拼接、查找、...
2. 使用字符串常量初始化:这种方式会将结束符`\0`一同存储在数组中。例如:`char panic[6]={"HELLO"};` 或 `char panic[]="HELLO";` 在这种情况下,如果指定了数组长度,长度应大于或等于初始化字符串的长度,多余...
- 字符数组与字符串常量的交互:字符串常量是不可变的,不能直接修改。 2. **std::string类**: - 创建与初始化:可以通过构造函数创建,如`std::string str("Hello");`或`std::string str = "Hello";` - 操作:...
【字符串和字符数组】在C++编程中是基础且重要的概念。字符串是由一串字符组成的序列,通常以双引号括起,例如"Hello, world"。在内存中,C++将字符串存储为连续的字符序列,每个字符占据一个字节,并在字符串的末尾...
字符数组可以赋值为双引号包围的字符串字面量,但需要注意字符串常量是不可变的。如果需要修改字符串,可以使用`std::string`类。 总的来说,数组、指针和引用在C++中扮演着基础而重要的角色,它们提供了灵活的数据...