

C语言中到底可不可以用内置的函数名来作为标识符?如果可以的话,那为什么我用scanf作为变量名时可以正常输出结果而用printf作为变量名就不可以正常输出结果呢?


C语言中到底可不可以用内置的函数名来作为标识符?如果可以的话,那为什么我用scanf作为变量名时可以正常输出结果而用printf作为变量名就不可以正常输出结果呢?
第一,c语言没有所谓内置函数一说。c语言所有的函数都是地位平等的,scanf只能算库函数。c语言本身没有任何函数。
第二,本质上,函数名就是变量,它相当于一个函数指针。同时c语言允许在不同作用域定义同名的变量,内侧的变量起作用,隐藏外侧的。