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(...
char *str:声明的是一个字符型指针,这个指针可指向任何字符串常量或某个字符变量。char str[] :声明的是一个字符型数组,数组的内容可以是任何内容,末尾加上’\0’ 后就是是字符串。
char **str:是一个指向指针的指针,用于表示一个指针数组 可以看作char* *str:str是一个指针,指向的类型是char* char *&str:声明了一个指向指针的引用,可以修改指针本身所指向的地址。 示例代码 #include <iostream>using namespace std;void ModifyStringArray(char** str) {// 修改字符串数组中的第一个元...
1charstr[] ="abcd";//等号两端是相同的数据类型,右值成为左值2char* str ="abcd";//等号两端是不同的数据类型,右端自动转型成char*,该str得到了“abcd”的地址,而"abcd"这个char数组仍然没有名字。 最后char a[]="Hello";与char aa[8];aa="Hello" 的不同之处在哪,为什么第一个对,第二个错?
char *str里的str是指针变量,str的值未初始化(局部变量的话。全局则自动初始化为NULL)。char str[ ]里str是地址常量,str的值是str[ ]的地址。三、定义方法不同:在char * str中,明显str的类型是char*。这没什么特殊的,只是一个简单的char指针。char str[]是不能这样定义的,所以假定用...
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) ...
(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[]="hello"与char *str="hello"的区别 char str[]="hello"; 第一个表达式表示的是在动态变量区中开辟一个能==连续==放6个==(6个单元)==字符的数组,数组名称是str.而赋值运算符右边是一个字符串常量,这个字符串常量是存放在常量区的,这个表达式的意思就是将“hello”这个字符串常量...