C语言 指针引用字符串 以及 字符指针变量和字符数组的比较
(一)字符串的引用方式
(1)用字符数组存放一个字符串,可以通过数组名和下标引用字符字符串中一个字符,也可以通过数组名和格式声明“%s”输出该字符串。
举例:
#include<stdio.h>
int main()
{
char string[]="I love China!";
printf("%s\n",string);
printf("%c\n",string[7]);
return 0;
}
(2)用指针变量访问字符串。通过改变指针变量的值使它指向字符串中的不同字符。
(二)使用字符指针变量和字符数组的比较
(1)字符数组有若干个元素组成,每隔元素中放一个字符,而字符指针变量中存放的是地址(字符串第一个字符的地址),绝不是将字符串放到字符指针变量中。
(2)赋值方式:可以对字符指针变量赋值,但对不能对数字名赋值。
可以采用下面方法对字符指针变量赋值:
char *a; //a为字符指针变量
a = "I love China"; //将字符串首元素地址赋给指针变量,合法。但赋给a的不是字符串,而是字符串第一元素的地址。
不能用以下办法对字符数组名赋值:
char str[14];
str[0] = 'I'; //对字符数组元素赋值,合法!
str = "I love China"; //数组名是地址常量,不能被赋值,非法!
(3)初始化的含义,对字符指针变量赋初值:
char *a = "I love China"; //定义字符指针变量a,并把字符串第一个元素的地址赋给a
等价于:
char *a; //定义字符指针变量aa = "I love China"; //把字符串第一个元素的地址赋给a
而对数组的初始化:
char str[14] = "I love China"; //定义字符数组str,并把字符串赋给数组中各元素。
不等价于:
char str[14]; //定义字符数组strstr = "I love China"; //企图把字符串赋给数组中各元素,错误
数组可以在定义时对各元素赋初值,但不能用赋值语句对字符数组中全部元素整体赋值。
(4)存储单元的内容。
编译时为字符数组分配若干存储单元,以存放各元素的值,而对字符指针变量,只分配一个存储单元(Visual C++为指针变量分配4个字节)
(5)指针变量的值是可以改变的,而数组名代表一个固定的值(数组元素的地址),不能改变。
char *a = "I love China";a = a + 7; //改变指针变量的值,即改变指针变量的指向printf("%s\n", a); //输出从a指向的字符开始的字符串
char str[] = "I love China";str = str + 7; //数组名虽然代表地址,但它是常量,值不能改变。不合法。
(6)字符数组中各元素的值是可以改变的(可以对它们再赋值),但是字符指针变量指向的字符串常量中的内容是不可以被取代的(不能再赋值)。
char a[]="House"; //字符数组a初始化
char *b="House";//字符指针变量b指向字符串的第一个字符
a[2]='r';//合法,r取代a数组元素a[2]的原值u
b[2]='r';//非法,字符常量不能改变
(7)引用数组元素。
字符数组可以用下表法(用数组名和下表)引用一个数组元素(如a[5]),也可以用地址法(如*(a + 5))。
如果定义了字符指针变量p,并使他指向数组a的首元素,则可以用指针变量带下表的形式引用数组元素(如p[5]),地址法(如*(p + 5))引用数组元素a[5]。
- C语言字符串指针变量与字符数组的区别
- 数组与字符串、字符指针与其他类型指针、赋值参数、指针参数以及引用参数、函数指针
- C语言字符串指针变量与字符数组的区别
- 对C语言中的字符串,字符数组以及用指针表示字符串的理解
- C/C++——声明一个到字符的指针,包含10个整数的数组,到包含10个整数的数组的引用,到字符串的数组的指针,到字符的指针的指针...
- 关于C语言字符数组、字符串和指针的相关问题
- 发现一个c语言中用字符数组和char型指针管理字符串一个很容易搞混的地方
- C语言中的数组和指针以及字符串
- C语言中,为什么字符串可以赋值给字符指针变量
- 字符数组名与字符串指针变量名的区别
- 字符数组和字符串指针,指针和引用,指针和多维数组
- 第7周 C语言及程序设计提高例程-28 字符串、字符数组、字符指针
- C语言中字符数组和字符串指针分析
- C语言提高-28讲: 字符串、字符数组、字符指针
- 浅谈C语言中变量、常量、数组、字符串、指针的地址
- c语言指针字符串与字符数组字符串的区别
- C语言中字符数组和字符串指针分析
- C语言中字符数组和字符串指针分析
- C语言day3(字符串,字符数组,一级指针的典型用法)
- 关于c语言中的字符数组和字符串指针