字符指针的问题,编译过不去,请帮忙看看

Cassati 2010-02-20 11:30:30
字符指针的问题,tc3编译过不去啊,请帮忙看看,谢谢了

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *s1;
s1 = "abc";
char *s2;
printf("the s1 = %s.\r\n",s1);
printf("the s2 = %s.\r\n",s2);
return 0;
}
...全文
193 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanderer1224 2010-02-22
  • 打赏
  • 举报
回复
我说亲爱的兄弟姐妹们啊,难道没有任何地址指向的指针变量能被打印出来???????
char *s2;
printf("the s2 = %s.\r\n",s2);
jiuchang 2010-02-21
  • 打赏
  • 举报
回复
执行错误但是不影响编译

非C++编译器是要求在代码块的开关先声明变量,然后才能使用的,C++可以随时随地申请新的变量
上面的错误就是对s1的赋值语句引起的错误,调换一下顺序就能编译过去了
cy330206 2010-02-21
  • 打赏
  • 举报
回复
%s 不能打印指向NULL的指针的,,
东大坡居士 2010-02-21
  • 打赏
  • 举报
回复
没初始化也可以打印啊~~~~
lwouyang 2010-02-21
  • 打赏
  • 举报
回复
初初看还真没注意到。
引用 5 楼 mstlq 的回复:
哦,看来turbo c3.0不支持C99标准……
那么按照C89标准,变量必须定义在语句块的最前面,楼主可以尝试
正解!dd
Cassati 2010-02-20
  • 打赏
  • 举报
回复
标准还真没了解过~~谢谢兄弟
mstlq 2010-02-20
  • 打赏
  • 举报
回复
哦,看来turbo c3.0不支持C99标准……
那么按照C89标准,变量必须定义在语句块的最前面,楼主可以尝试


#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *s1;
char *s2; /*所有的变量定义都放到语句块的最前面*/
s1 = "abc";
printf("the s1 = %s.\r\n",s1);
printf("the s2 = %s.\r\n",s2);
return 0;
}
Cassati 2010-02-20
  • 打赏
  • 举报
回复
也就是说“char *s2; ”这句语法错误。。
Cassati 2010-02-20
  • 打赏
  • 举报
回复
to mstlq:你提供的那个是没问题~可以通过,问题是我这个过不去啊。
编译信息如下:
Turbo C For Windows 3.1 正在为您编译....

e:\projects\c\test\test.c:
错误 e:\projects\c\test\test.c 8: 表达式语法错 在函数
错误 e:\projects\c\test\test.c 10: 未定义的符号's2' 在函数
*** 2 个错误 ***
mstlq 2010-02-20
  • 打赏
  • 举报
回复
shit,脑子刚才短路了……
楼主的代码应该是可以通过编译的……

请楼主把编译出错的信息贴出来,好让大家帮你定位错误
mstlq 2010-02-20
  • 打赏
  • 举报
回复
请楼主注意初始化赋值两个概念的区别,
请使用下面的代码
#include <stdio.h> 
#include <stdlib.h>
int main(void)
{
char *s1= "abc";
/*s1 = "abc"; */
char *s2;
printf("the s1 = %s.\r\n",s1);
printf("the s2 = %s.\r\n",s2);
return 0;
}

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧