char str[]定义了数组,str可认为一个常指针不可改变,但str指向的内容可以发生改变。 char *p定义了一个可变指针,p可以指向其他对象,但是对于char *p = "C++"这样的情况,p指向的是常量,故内容不能改变。 综上,C++提供的string类相比之下,要安全多了。
很明显,str++;是错误的语法,因为不是变量(这里需要注意:char str[] 作参数时,char str[]是当做char *str使用,即str++不会报错 ) str+1; str+1;是没问题,因为str是指针,所以+1就是偏移char个宽度,指向下一个字节的地址 &str &str对数组名取地址,即&str是代表整个数组的地址。&str是一个宽度是数组的...
C语言中没有特定的字符串类型,常用以下两种方式定义字符串:一种是字符数组,另一种是指向字符串的指针。如下: 代码语言:javascript 复制 (1)char str[]="happy";(2)char*str="happy"; 这种方式有什么不同呢? 下面看两个例子:修改字符串中的字符 示例1: 代码语言:javascript 复制 #include<stdio.h>intmain(...
只是改变了指针指向的常量字符串地址cout<< str <<endl; //输出:Worldvoid ModifyPointer(char *str) {str = "World";// 参数str是指向字符串的起始位置,而不是字符串本身,所以这样写是错误的,会返回原值}
char *str:声明的是一个字符型指针,这个指针可指向任何字符串常量或某个字符变量。char str[] :声明的是一个字符型数组,数组的内容可以是任何内容,末尾加上’\0’ 后就是是字符串。
char *str里的str是指针变量,str的值未初始化(局部变量的话。全局则自动初始化为NULL)。char str[ ]里str是地址常量,str的值是str[ ]的地址。三、定义方法不同:在char * str中,明显str的类型是char*。这没什么特殊的,只是一个简单的char指针。char str[]是不能这样定义的,所以假定用...
关于char[]和char*的理解 本质区别 char str[]表示str是一个字符数组,str这个字符数组里面所有的元素都是单个的字符,因此char[]强调的是数组的概念。 char* str表示str是一个指针,str这个指针指向了一个字符的地址,因此char*强调的是指针的概念。 char[]字符串...
char str[]:这里面的str表示一个char类型的数组指针,该指针所指向的数组内容是保存在栈上面的,是可以修改的。而char*str是一个字符串指针,这个指针指向的是字符串第一个字符的地址,而这个指针存在栈上,但是字符串的内容并不在栈里面,而在字符常量区域里面储存。所以查看char *str1 = "abcd1234"...
(1)charstr[]="happy";(2)char*str="happy"; 这种方式有什么不同呢? 示例一:字符数组 #include<stdio.h>intmain(void){charstr[20]="hello";str[0]='H';printf("%s\n",str);return0;} 运行结果: Hello 示例二:指向字符串的指针 #include<stdio.h>intmain(void){char*str="hello";str[0]=...
char str[]="hejk "; return str; } void main() { str(); } 程序1运行正常,程序2警告。 首先,数组和指针是不同的数据类型,有本质的区别: char str[] = "hejk"; //sizeof(str) == 5 * sizeof(char) char * str = "hejk"; //sizeof(str) == 4(x86) or 8(x64) ...