2、str1是指针变量,str1++; right,指针加减整型,结果还是指针。 对于str2而言,char str2[] = "hello world"; <=> char str2[] = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '\0'}; 这是对字符数组初始化,所以str2是数组名称(指针常量),str2++;false,常...
11:*str1是一个指针,指针指向的是存储地址,地址+1不一定会得到字符串的下一个地址 15:str2是一个字符数组,(*str2)++表示数组下标+1 24:23行str1=str2,将str1指针指向了str2数组,所以(*str1)++会指向str2数组下一个地址
str1 ,str2 都是指针类型,指针占4个字节,sizeof(str1)求的是指针本身的长度,所以是4,类似的还有 char占1字节int 占4字节,double占8字节
其实,str1与str2完全不同,str1只存放一个字符串的首地址(字符串存放在常量区),str2是实实在在的存放完整的字符串。有什么问题请留言。
char *str="hello";这里代表定义一个字符串指针,可以用别的名字代替。cout<<*str<<endl;这里的*str代表字符串第一个字符,相当于str[0] = 'h'
char str1[]="abc"//栈,运行的时候赋值,存取较快 char *str2="abc"//abc\0在常量区,str2在栈上,编译的时候就以确定,存取较慢 思考:str1是数组的名称,是数组存放第一个元素的地址,即存放a的空间的地址 str2是一个指针,指针内存放的是地址,即存放常量“abc”的首地址...
用strncmp或memncmp函数来判断,返回值为0表示包含,否则不包含。strncmp(str1,str2,strlen(str2))==0 表示字符串str1自起始位置起包含str2的内容 memncmp(str1,str2,strlen(str2))==0表示字符串str1自起始位置起包含str2的内容
char 是字符,比如char ccc,此时cccc表示一个字符,我们可以用%c的格式化打印出来。另外,给字符赋值一般这样:ccc = 'd';这句的意思是把d这个字符赋值给ccc。char 还可以声明字符数组,即我们所说的字符串。比如char str_1[100];这表示在栈区申请了可自动回收的100字节的空间,用来存放100个字符。
char *str里的str是指针变量,str的值未初始化(局部变量的话。全局则自动初始化为NULL)。char str[ ]里str是地址常量,str的值是str[ ]的地址。三、定义方法不同:在char * str中,明显str的类型是char*。这没什么特殊的,只是一个简单的char指针。char str[]是不能这样定义的,所以假定用...