C++ 函数 scanf() 必须含有参数,且其参数为字符型字面量,其功能是提示输入。( )
这道题考scanf参数类型,别被‘字符型字面量’带偏。scanf第一个参数必须是字符串字面量(格式控制串),后续才是变量地址,记住‘格式串+地址’这个铁律。
学生容易把scanf当成类似cin的流操作,以为它直接读字符就行,或者混淆char与字符串字面量。题干说‘参数为字符型字面量’,其实scanf需要的是字符串字面量(如"%d"),因为它是C语言遗留的格式化函数,第一个参数永远是指向格式串的指针,后续参数必须是变量的地址(&a),否则无法写入。
【考点】scanf函数调用规范|格式化输入|C++标准库与C语言兼容性
命题人专门挖了‘字符型字面量’这个点。很多初学者刚学scanf就背公式:scanf("%d", &a); 于是误以为scanf的参数就是‘字符’。其实scanf第一个参数是字符串字面量(格式控制串),类型是const char*;后续参数必须是变量的地址(&a),类型是T*。题干说‘参数为字符型字面量’,看似在说scanf的参数,实则偷换概念——它把‘格式串’说成‘字符型字面量’,而字符型字面量是单个char(如'3'),根本不是scanf需要的。这就是典型的‘术语混淆+类型错位’陷阱。