C语言中对字符串操作主要有两种方式,一个是使用字符数组char str[];另一个是使用字符指针。二者区别如下。 字符数组 使用char str[]定义字符数组str,中括号可以表示数组大小,也可以不写,如果不写数字,则必须为字符数组提供初始值,以便编译器进行内存分配。 可以使用字符串面值(string literal)初始化字符数组,也可以...
char *str:声明的是一个字符型指针,这个指针可指向任何字符串常量或某个字符变量。char str[] :声明的是一个字符型数组,数组的内容可以是任何内容,末尾加上’\0’ 后就是是字符串。
一、概念不同 char *str 声明的是一个指针,这个指针可以指向任何字符串常量。char str[] 声明的是一个字符数组,数组的内容可以是任何内容,严格意义上说,末尾加上'\0' 之后才能算是字符串,二、变量不同 char *str里的str是指针变量,str的值未初始化(局部变量的话。全局则自动初始化为NULL)...
char *str = "Hello";cout << str << endl; // 输出:Hellostr ="World"; //指针变量本身地址没有改变,只是改变了指针指向的常量字符串地址cout<< str <<endl; //输出:Worldvoid ModifyPointer(char *str) {str = "World";// 参数str是指向字符串的起始位置,而不是字符串本身,所以这样写是错误的,...
char str[] = "xxxxx",str在栈上申请空间,将常量内容复制进来,所以是局部变量。 首先,数组和指针是不同的数据类型,有本质的区别: char str[] = "abcd"; //sizeof(str) == 5 * sizeof(char) char * str = "abcd"; //sizeof(str) == 4(x86) or 8(x64) ...
【C语言笔记】char *str与char str[]的区别 C语言中没有特定的字符串类型,常用以下两种方式定义字符串:一种是字符数组,另一种是指向字符串的指针。如下: 代码语言:javascript 复制 (1)char str[]="happy";(2)char*str="happy"; 这种方式有什么不同呢?
char str[]:这里面的str表示一个char类型的数组指针,该指针所指向的数组内容是保存在栈上面的,是可以修改的。 而char*str是一个字符串指针,这个指针指向的是字符串第一个字符的地址,而这个指针存在栈上,但是字符串的内容并不在栈里面,而在字符常量区域里面储存。
下面介绍一下char str[]="hello"与char *str="hello"的区别 char str[]="hello"; 第一个表达式表示的是在动态变量区中开辟一个能==连续==放6个==(6个单元)==字符的数组,数组名称是str.而赋值运算符右边是一个字符串常量,这个字符串常量是存放在常量区的,这个表达式的意思就是将“hello”这个字符串常量...
sizeof()打印的区别 下面,我们再来看看对 str 和 p 取 sizeof() 会有什么惊喜: 很明显,可以看到两个打印值不一样,我们来分析一下为什么是这个值。 sizeof(str) -> 6:char 类型是 1 个字节 ==》存在 "hello" 5个字符 + “\0" 1个结束符 = 6个字符 ==》所以 sizeof(str) 为 6。也就是说字...
char*str="hello"; 解析: str是一个char型指针变量,它指向常量”hello”字符串所在的首地址 ①:变量str保存在栈上 ②:常量”hello”即保存在常量存储区 恩,我想把第一个字符改成’a’ *str='a'; 很明显,这样会报错,因为常量不能改变,”hello”保存在内存常量区,程序编译完成时,这个值就确定了不能改变。