C语言指针字符串【C语言学习笔记】

C/C++
259
0
0
2022-11-30

指针字符串的正确表达:

    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;
}