Char *s=”hello” 等价于 char str[]=”hello”;
常量字符串在编译器看来,就是它第一个字符的地址——可以 *s=str
相当于:s=&str[0];*s=str[0]——s是地址,*s是内容。
字符串是以“\0”结尾的字符数组;
想给字符串赋值,只能一个一个的[0],[1]。只有在初始化的时候可以:
Char ch[10]=”123456789”;
但是ch=“123456789”;//这就错的
可以ch[0]=”1”;ch[1]=”2”,……
#include <stdio.h>
void main()
{
char str[]="abcdef";
char* s=str;
int i=0;
while(str[i]!='\0')//str是个指针常量
{
printf("%c\n%p\n",str[i],str);
i++;
}
printf("\n");
for(i=0;i<6;i++)
{
str[i]=i+0x30;
printf("%c\n%p\n",str[i],str);
}
printf("\n");
str[1]='a';//这里只能是单个的比如1 2 3...9,a...z,不可以10
printf("%c\n",str[1]);
printf("\n");
while(*s!= '\0')
{
printf("%c\n%p\n",*s,s);//s是个指针变量
s++;
}
printf("\n");
//*****************************不报错但是不输出******************************//
i=0;
while(s[i] != '\0')
{
printf("%c\n%p\n",s[i],s);//s是个指针变量
i++;
}
printf("\n");
}
几种定义方式
char str[]="abcdef";
char* s=str ;
char str1[5]="1111";//一定要是4个1,不然会报错,4+1个\0
char * string="aaaa";
//输出的时候也可以用——输出单个字符
printf("%c\n",str1[1]);
printf("%c\n",string[1]);
//输出字符串
printf("%s\n",str1);
printf("%s\n",string);