读书人

关于这么使用#define的依据?解决思路

发布时间: 2012-03-06 20:47:55 作者: rapoo

关于这么使用#define的依据?
int main()
{
#define name "username "
printf( "%c ",name[0]);
return 0;
}

name在编译的时候被处理成 "username ", 也就是指向这个字符串的指针?
那么在这里, 这个过程在编译的时候是如何处理的?

能否提供相关具体的关于C编译器的参考资料?

[解决办法]
直接替换:
printf( "%c ", "username "[0]);
[解决办法]
编译器首先扫描语法有无错误。你#define name "username "后,它处理printf( "%c ",name[0]);语句时直接当做printf( "%c ", "username "[0]);处理,这样显然有语法错误啦。
printf( "%c ",name);就行了
[解决办法]
int main()
{
#define name "username "
printf( "%c ",name[0]);
return 0;
}
============
“username”是文本字符串常量,类型是个常量字符数组,而数组可当成个常量指针使用
所以相当于字符数组的首字符
[解决办法]
printf( "%c ", "username "[0]);

"username " 它其实是一个指向 "username " 这个字符串的首地址指针,
那么 "username "[0] 就是 .....

读书人网 >C语言

热点推荐