首页 > 试题广场 >

char *p="girl";的含义是定义字符型指针变量 p

[单选题]
char *p="girl";的含义是定义字符型指针变量 p,p 的值是字符串"girl"。请问这句话的说法是正确的吗?
  • 正确
  • 错误
p的值是字符串"girl"的首地址
发表于 2017-08-29 10:02:21 回复(0)
更多回答
char *p = "girl"; 
在这个声明中,"girl"被存储在静态数据区,而且是全局的,p仅仅就是个指针,指向这个区域;
char p[] = "girl";
p数组作为局部变量被存储在栈区;
发表于 2020-09-10 20:17:03 回复(0)
指针是用来存放变量的地址的
发表于 2019-10-25 00:06:33 回复(0)
 (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; //定义字符指针变量a
        a="I love China!"; //把字符串第一个元素的地址赋给a

而对于数组的初始化:
        char str[14]="I love China!"; //定义字符数组str,并把字符串赋给数组中各元素
不等价于
        char str[14]; //定义数组str
        str[]="I love China!"; //企图把字符串赋给数组中各元素,错误

        数组可以在定义时对各元素赋初值,但不能用赋值语句对字符数组中全部元素整体赋值。

编辑于 2022-09-22 14:54:48 回复(0)
p是数组名的首地址即是a或者a[0]的地址,*p才是值girl。
发表于 2021-06-27 21:21:56 回复(0)
p是字符型指针变量,p的值是字符'g'!
发表于 2018-11-09 09:07:13 回复(1)
可以理解成p存储的是gril的地址,然后*p指向该地址的值,即gril。
发表于 2023-07-19 13:00:13 回复(0)
*p指向''girl'',此处p为首地址,即g
发表于 2022-01-18 11:42:43 回复(0)