在c程序中,字符串是存储在字符数组中的,想引用一个字符数组,有以下两种办法:
(1)用字符数组存放一个字符串,可以通过数组名和下标引用字符串中一个字符,也可以通过数组名和格式声明“%s”输出该字符串。
程序:定义一个字符数组,输入该字符串和第8个字符
- #include
- int main()
- {
- char a[] = "I love China!";
- printf("%s\n", a);
- printf("%c\n", a[7]);//第八个字符位a[7]
- return 0;
- }
a[7]实际上就是*(a+7),a+7是一个地址,指向字符‘c'
(2)用字符指针变量指向一个字符串常量,通过字符指针变量引用字符串常量。
程序:通过字符指针输出字符串
- #include
- int main()
- {
- char* string;
- string = "I love China!";
- printf("%s", string);
- return 0;
- }
C语言对字符串常量是按字符数组处理的,在内存中开辟了一个字符数组用来存放该字符串常量,但是这个字符数组是没有名字的.因此不能通过数组名来引用,只能通过指针变量来引用。
对字符指针变量string初始化,实际上是把字符串第1个元素的地址(即存放字符串的字符数组的首元素地址)赋给指针变量string,使string指向字符串的第1个字符.
说明:有人误认为string是一个字符串变量,以为在定义时把"I love China!"这几个字符赋给该字符串变量,这是不对的。在C语言中只有字符变量,没有字符串变量。
实际上,char* string="hello“分为:char* string;string=”hello“;把字符串的第一个元素的地址赋给string,注意:string被定义为一个指针变量,基类型为字符型。请注意它只能指向一个字符类型数据,而不能同时指向多个字符数据,更不是把"hello"这些字符存放到string 中(指针变量只能存放地址),也不是把字符串赋给* string。只是把"hello"的第1个字符的地址赋给指针变量string。
先可以通过字符指针变量来输出它所指向的字符串,如printf("%s",string),%s是输出字符串时所用的格式符,在输出项中给出字符指针变量名string,则系统会输出string所指向的字符串第1个字符,然后自动使string加1,使之指向下一个字符,再输出该字符……如此直到遇到字符串结束标志’\0'为止
对于字符的存取,可以采用下标的方式或指针的方式: