首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
C语言中,不是指针常量的是()
[单选题]
C语言中,不是指针常量的是()
空指针(NULL)
函数的名字
数组的名字
宏函数的名字
查看正确选项
添加笔记
求解答(0)
邀请回答
收藏(521)
分享
9个回答
添加回答
32
推荐
clear_rain
选D
【分析】
本题考查的是指针常量的定义
我们先来看一下指针常量是什么:指针是形容词,常量是名词。这回是以常量为中心的一个偏正结构短语。那么,指针常量的
本质是一个常量
,而用指针修饰它,那么说明这个常量的
值是一个指针
。
指针常量的值是指针,这个值因为是常量,所以不能被赋值。
回过来看本题:
A选项:NULL 是一个标准规定的宏定义,用来表示
空指针常量
。
B选项:C语言规定函数名就是函数的入口地址。
符合指针常量的性质
:值是一个指针,且不能修改。
C选项:数组的名字本质上与函数名是相同的,只不过一个指向了函数体,一个指向的数组。在一次运行中,数组名所指向的地址都是同一个地址,也
符合指针常量的定义
。
D选项:宏函数的名字则不是,原因在于宏在编译前先处理,类似于查找替换(支持正则表达式匹配),所以宏函数的名字只是简单的文本,并没有实际意义,所以
不是指针常量
。
编辑于 2019-03-25 14:40:01
回复(2)
更多回答
10
白驹之过隙
选D。
宏函数不分配内存,指针无意义。
NULL 指针是一个定义在
标准库中的值为零的
常量
,
在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。
数组名
是一个指向 &
数组名
[0] 的指针,即数组的第一个元素的地址。
使用数组名作为常量指针是合法的。比如,*(arr + 4) 是一种访问 arr[4] 数据的合法方式。
宏是在预编译时执行的,
而函数是在运行时执行的
。
宏替换在编译前进行,不分配内存 .
宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)
发表于 2019-03-23 09:55:33
回复(1)
5
Ryanww
D
数组名在C语言中强调为指针常量
NULL是
预处理器宏NULL被定义为实现定义的空指针常量
C语言规定
函数名
就是
函数的
入口地址
宏的函数处理是在预编时期,用宏体代替宏名,
发表于 2019-03-22 20:51:48
回复(0)
3
MZiN
宏是在预编译时执行的,
而函数是在运行时执行的
。
宏替换在编译前进行,不分配内存 .
宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)
发表于 2019-04-10 10:13:30
回复(0)
1
求杨超越带好运😁
D
常量指针是不能改变值的指针,或者说只读的,常量指针指向的值可变,但是其本身只能指向该地址
发表于 2019-03-23 14:38:57
回复(0)
0
牛客0056号
0、3-3、0L、(void*)0等0值都可作为指针常量,但(char*)0仅表示指针值为0,不能作为指针常量
发表于 2023-02-25 09:51:47
回复(0)
0
牛客581909011号
宏替换不分配内存不会是一个指针常量
发表于 2021-03-30 13:14:03
回复(0)
0
剃头洗脚平天下
D
发表于 2019-03-23 19:52:41
回复(0)
0
特别关心
D
发表于 2017-07-25 19:25:55
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
C++工程师
C语言
牛客
上传者:
阿奻_
难度:
9条回答
521收藏
3270浏览
热门推荐
相关试题
class A; class B;...
360集团
C++
C语言
评论
(18)
来自
360公司2014校招笔试卷
假定指针变量 p 定义为 “int...
360集团
C++
C语言
评论
(36)
来自
360公司2014校招笔试卷
总成绩和平均分计算
C++工程师
牛客
评论
(102)
已知a
40
=...
京东
职能
2019
财务
保险
评论
(1)
《拳皇97》最后BOSS是谁?
游戏常识
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题
指针常量的值是指针,这个值因为是常量,所以不能被赋值。