首页 > 试题广场 >

C语言中,不是指针常量的是()

[单选题]
C语言中,不是指针常量的是()
  • 空指针(NULL)
  • 函数的名字
  • 数组的名字
  • 宏函数的名字
推荐
选D
【分析】
本题考查的是指针常量的定义

我们先来看一下指针常量是什么:指针是形容词,常量是名词。这回是以常量为中心的一个偏正结构短语。那么,指针常量的本质是一个常量,而用指针修饰它,那么说明这个常量的值是一个指针

指针常量的值是指针,这个值因为是常量,所以不能被赋值。

回过来看本题:
A选项:NULL 是一个标准规定的宏定义,用来表示空指针常量
B选项:C语言规定函数名就是函数的入口地址。符合指针常量的性质:值是一个指针,且不能修改。
C选项:数组的名字本质上与函数名是相同的,只不过一个指向了函数体,一个指向的数组。在一次运行中,数组名所指向的地址都是同一个地址,也符合指针常量的定义
D选项:宏函数的名字则不是,原因在于宏在编译前先处理,类似于查找替换(支持正则表达式匹配),所以宏函数的名字只是简单的文本,并没有实际意义,所以不是指针常量
编辑于 2019-03-25 14:40:01 回复(2)
更多回答
选D。宏函数不分配内存,指针无意义。
NULL 指针是一个定义在标准库中的值为零的常量在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。
数组名 是一个指向 &数组名[0] 的指针,即数组的第一个元素的地址。使用数组名作为常量指针是合法的。比如,*(arr + 4) 是一种访问 arr[4] 数据的合法方式。
宏是在预编译时执行的,而函数是在运行时执行的宏替换在编译前进行,不分配内存 . 宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)
发表于 2019-03-23 09:55:33 回复(1)
D
数组名在C语言中强调为指针常量
NULL是预处理器宏NULL被定义为实现定义的空指针常量
C语言规定函数名就是函数的入口地址
宏的函数处理是在预编时期,用宏体代替宏名,
发表于 2019-03-22 20:51:48 回复(0)
宏是在预编译时执行的,而函数是在运行时执行的宏替换在编译前进行,不分配内存 . 宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)
发表于 2019-04-10 10:13:30 回复(0)
    D 常量指针是不能改变值的指针,或者说只读的,常量指针指向的值可变,但是其本身只能指向该地址
发表于 2019-03-23 14:38:57 回复(0)
0、3-3、0L、(void*)0等0值都可作为指针常量,但(char*)0仅表示指针值为0,不能作为指针常量
发表于 2023-02-25 09:51:47 回复(0)
宏替换不分配内存不会是一个指针常量
发表于 2021-03-30 13:14:03 回复(0)
D
发表于 2019-03-23 19:52:41 回复(0)
D
发表于 2017-07-25 19:25:55 回复(0)