(1) 字符串变量名就是首地址。
字符串在输入的时候不需要加上“&”符号,字符串本质就是地址。
注意:打印的时候,倘若是一个*p指向的字符串,打印不需要加解引用p,直接p就可以了。
#include <stdio.h>
int main(){
void *p;
char a[99]="字符串";
p=a;//由于a变量名就是这个字符串的地址,所以不需要加上”&“
printf("%s",p);//这里打印的时候p代表a的地址,*p代表a地址里面的东西,但是字符串实质上就是一个地址,*p是没有意义的,所以直接p来进行打印字符串
}
*(2) 字符串的一些特点。
在对字符串赋值时可以
#include <stdio.h>
int main(){
char a[128]="chen";
char c[128]={"chen"};
}
(3)在字符串的末尾都有一个默认的’\0‘,可以用这个来统计字符串的元素个数。
但是也可以自己用<string,h>里面的strlen函数,x=strlen(a)。
#include <stdio.h>
int main(){
char a[128]="chen";
int count=0;
for(int i=0;a[i]!='\0';i++){
count++;
}
printf("%d",count);//这里打印出来的是4.
}
在字符串连接的时候一定要记住末尾的’\0‘要加上,不然pta过不去。
char *str_cat(char *s,char *t){
int x=strlen(s),y=strlen(t);
for(int i=0;i<=y;i++){//这里写了等于y,因为t的最后一个就是'\0'也给了s。
s[x+i]=t[i];
}
return s;
}
(4)字符串的特殊打印
#include <stdio.h>
int main(){
char a[128]="chen";
printf("%s",&a[1]);//这里%s用的是a[1]的地址,然后打印的是hen。
}
#include <stdio.h>
int main(){
char a[128]="chen";
printf("%s",a[1]);//这样的话啥子也打印不出来,因为a[1]只是一个字符,应该用%c打印。
}
(5)字符串初始化问题
#include <stdio.h>
int main(){
char c[999]="12345";
c[0]='\0';//这里仅仅是把第一个变成了\0,后面的还是不变,
printf("%s\n",c);//这里就打印空白
c[0]='1';//这里本来的/0变成了1,那么后面的就可以打印出来了
printf("%s\n",c);
}
所以注意以后再使用同一个字符串作为中间变量时,要记得全部初始化。