C语言:字符指针

一、字符指针概念

字符指针是存放字符地址的指针

二、字符指针的两种用法

指向字符或指向字符串

 

指向字符:

char ch = 'w';
char* p = &ch;
printf("%c\n", *p);//w

 

指向字符串:

char* p = "abcdef";
printf("%s\n", p);//abcdef
printf("%c\n", *p);//a

“abcdef”是字符串,也是一个表达式,表达式值为首字符地址。

因此char* p = "abcdef"  其实是将字符‘a’的地址赋值给指针变量

 

既然字符串表达式的值为首字符地址,和数组名类似,那么也可以将字符串看做一个数组,数组中存放的是 { 'a','b','c','d','e','f' ,'\0' }。

也可以把字符串当做数组名使用:

int main()
{
    printf("%c\n", "abcdef"[3]);//d
    printf("%c\n", "abcdef"[5]);//f

    return 0;
}

三、常量字符串与字符串的区别

下列程序运行结果是

str1 != str2
str3 = str4

因为str1和str2是两个独立的字符数组,数组中存放的是  "hello bit" ,str1和str2分别是两个数组首元素的地址,所以str1!=str2

而str3与str4是两个字符型指针变量,存放的是常量字符串“abcdef”的值,即首字符‘h’的地址,所以str3 = str4

int main()
{
    char str1[] = "hello bit";
    char str2[] = "hello bit";

    char* str3 = "abcdef";
    char* str4 = "abcdef";

    if (str1 == str2)
    {
        printf("str1 = str2\n");
    }
    else
    {
        printf("str1 != str2\n");
    }
    if (str3 == str4)
    {
        printf("str3 = str4\n");
    }
    else
    {
        printf("str3 != str4\n");
    }
    return 0;
}

你可能感兴趣的:(c语言,开发语言)