黑马程序员技术交流社区

标题: 指针的问题 [打印本页]

作者: 程序猿-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
  1. typedef char * String;
  2. int main()
  3. {
  4.     String s1, s2;
  5.    
  6.     s1 = "jack";
  7.     s2 = "rose";
  8.     return 0;
  9. }
复制代码




作者: 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时前加个*号,也不会报错额。
  1. #define String char *

  2. int main()
  3. {
  4.     String s1, *s2;
  5.    
  6.     s1 = "jack";
  7.     s2 = "rose";
  8.     return 0;
  9. }
复制代码




作者: 悠悠·漠漠    时间: 2014-4-15 00:35
肯定会出错咯!
程序开始执行,代码就会变成这个样子:
  1. int main()
  2. {
  3.     char *s1, s2;
  4.    
  5.     s1 = "jack";
  6.     s2 = "rose";
  7.     return 0;
  8. }
复制代码

定义的 s2其实是字符类型变量
改为:
  1. #define String char *

  2. int main()
  3. {
  4.     String s1;
  5.     String s2;
  6.    
  7.     s1 = "jack";
  8.     s2 = "rose";
  9.     return 0;
  10. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2