关于这么使用#define的依据?解决思路
关于这么使用#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] 就是 .....
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] 就是 .....