以下叙述中错误的是( )。
A) 可以给指针变量赋一个整数作为地址值
B) 函数可以返回地址值
C) 改变函数形参的值,不会改变对应实参的值
D) 当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL
这个叙述是错误的。在C语言中,虽然指针变量在底层存储的是地址(即内存中的整数位置),但直接给指针变量赋一个整数(尤其是非法地址或随机整数)作为地址值是非常危险的做法。这可能导致程序访问未定义或受保护的内存区域,引发程序崩溃或安全漏洞。正确的做法应该是使用有效的内存地址,例如通过malloc、calloc、realloc等函数分配的内存地址,或者全局变量、局部变量、静态变量的地址。
这个叙述是正确的。在C语言中,函数可以返回一个指针,即地址值。这是常见的做法,用于从函数中返回动态分配的内存、数组的首地址等。
这个叙述是正确的。在C语言中,函数参数是通过值传递的(对于非指针和引用类型)。这意味着函数内部对形参的任何修改都不会影响到实参。如果需要在函数内部修改实参的值,通常的做法是通过指针或引用(C++中)来传递参数。
这个叙述是正确的。stdio.h(或在C99及以后版本中推荐的stdio.h的替代品stdio.h)定义了NULL宏,用于表示空指针。因此,在包含该头文件后,可以将NULL赋值给指针变量,以表示该指针不指向任何有效的内存地址。
综上所述,错误的叙述是A) 可以给指针变量赋一个整数作为地址值。
不懂
amden 回复 19568276867: 指针变量必须是0xffffffff类型
如果函数的参数是数组的话 那改变一个不都改变了吗 所以B也是对的吗?
【解析】不能将一个整数直接赋给指针...
用户登录可进行刷题及查看答案
【解析】不能将一个整数直接赋给指针变量作为地址,所以A)是错误的。函数的返回值可以是地址,即指针。函数调用中形参值的变化不会传递给实参。
登录后提交答案