读书人

怎么判断形参是变量还是常量

发布时间: 2012-09-16 17:33:16 作者: rapoo

如何判断形参是变量还是常量
RT:
下面起得函数:

int function( char *str )
{
char str1[] = "aaaa";
static char str2[] = "aaaaa";
}
length1 = &str - &str1
length2 = &str - &str2
能否通过判断 length1 跟 length2的大小, 来判断传入参数是变量还是常量?

总觉得不是很可靠

[解决办法]
没戏

首先一点就是,变量与常量只对编写源代码的程序员有区别,编译后的程序不区分变量与常量
其次,变量与常量只看你是否使用const修饰它的定义,不看放在内存的哪里,一般来说,局部变量放在栈里,全局变量和静态变量(本质上也是全局)则不是。
最后,楼主想要利用内存地址判断是否是常量,这个方法的有效性仅限于“直接写在源代码文本中的常量字符串”,因为这东西会被放在常量区,并且在默认编译选项下会被设定只读。

读书人网 >C语言

热点推荐