指针字符串的正确表达:
char a[] = "hello"; //ok
char *b="hello"; //ok
char c[10];c[10]="hello"; //error
char c[10];c="hello"; //error
char *d;d="hello"; //ok
char e[]={"hello"}; //ok
char *f={"hello"}; //ok
char *g;g={"hello"}; //ok
数组字符串:
char a[]="hello";
a是常量,不能改变a的值。
指针字符串:
char *b="hello";
b是变量,实际上把字符串的第一个字符的内存地址赋值给指针变量b。
注意:
使用字符数组定义字符串,字符串为字符串变量。
使用字符指针定义字符串,字符串为常量。
例题:将字符串复制到字符串b,输出字符串b
#include<stdio.h>
int main(){
char a[]="hello"; //int *a="hello"
char b[10];
char *p1,*p2;
p1=a;p2=b;
while(*p1!='\0'){
*p2=*p1;p1++;p2++;
}
*p2='\0';
puts(b);
return 0;
}
例题:统计指针变量a所指的字符串中小写字符出现的次数,并存放到指针变量b中。使用函数完成。
char *a = “sdasdasFDSFFasasd”;
#include<stdio.h>
int main(){
void fun(char *a,int *b);
char *a="sadasdFFDSFDSdsadas";
int n=0;
fun(a,&n);
printf("%d",n);
return 0;
}
void fun(char *a,int *b){
int num=0;
while(*a!='\0'){
if(*a>='a'&&*a<='z')num++;
a++;
}
*b=num;
}