黑马程序员技术交流社区
标题:
指针的问题
[打印本页]
作者:
程序猿-2014
时间:
2014-4-11 20:19
标题:
指针的问题
本帖最后由 程序猿-2014 于 2014-4-15 11:15 编辑
#define String char *
int main()
{
String s1, s2;
s1 = "jack";
s2 = "rose";
return 0;
}
求教 这道题为什么是错的呢 有点不太明白
作者:
一只小菜鸟
时间:
2014-4-11 20:33
这是错误提示:
incompatible pointer to integer conversion assigning to
'char' from 'char [5]' [-Wint-conversion] 大概就是给字符赋值字符串
你的#define String char *在 String s1, s2相当于下面
char *s1; char s2;
你可以将#define String char * 换成typedef char * String
typedef char * String;
int main()
{
String s1, s2;
s1 = "jack";
s2 = "rose";
return 0;
}
复制代码
作者:
2014571245
时间:
2014-4-13 15:17
#deinfe String char * 定义了宏String
String s1,s2;展开后为char * s1,s2。
而你需要的是两个指针类型的变量,应该写成char *s1,*s2;
*只修饰s1,s2就是char类型。s2="rose"是把"rose"数组赋值给s2,也就是把char[5]类型赋值给char,所以报错。
定义char* 为string,typedef 比define 做得更好,不会出这种问题。
当然你的这个程序在定义s2时前加个*号,也不会报错额。
#define String char *
int main()
{
String s1, *s2;
s1 = "jack";
s2 = "rose";
return 0;
}
复制代码
作者:
悠悠·漠漠
时间:
2014-4-15 00:35
肯定会出错咯!
程序开始执行,代码就会变成这个样子:
int main()
{
char *s1, s2;
s1 = "jack";
s2 = "rose";
return 0;
}
复制代码
定义的 s2其实是字符类型变量
改为:
#define String char *
int main()
{
String s1;
String s2;
s1 = "jack";
s2 = "rose";
return 0;
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2