请问这段代码有什么错误?

xwmr1988 2009-02-26 07:10:45
#include <iostream.h>
void main()
{
char s[6];
s=new char[6];
s="string";
cout<<s;
}
有什么错误?
...全文
108 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
shilingk1 2009-02-27
  • 打赏
  • 举报
回复
s=new char[7];
这里应该是*s=new char[7];才行吧,因为我们是申请了一个未命名的空间由定义的指针指向
而这个语句与char s[7]; 刚好矛盾,因为这里s不是指针,因此报错了
shilingk1 2009-02-27
  • 打赏
  • 举报
回复
前面我没说太详细,以下在VC6.0下编译通过,楼主可以再试试
#include <iostream>
#include <string>
using namespace std;
void main()
{
string s;
//s=new string[];
s="string";
cout<<s;
}
蜥蜴枪王 2009-02-27
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 xwmr1988 的回复:]
我也同意11楼的说法,今天问了下老师,11楼的说法可以解释通,我把正确的写法公布一下:
#include <iostream.h>
void main()
{
char s[7];
s[0]='s';
s[1]='t';
s[2]='r';
s[3]=[i];
s[4]='n';
s[5]='g';
s[6]='\0';
cout < <s;
}
体会:char s[7];在定义时已分配了7个空间,所以不需要再分配空间了,且必须一个个的赋值。
[/Quote]
LZ你第一次的代码 是用new运算符为变量分配自由存储区空间,它返回的是分配了的内存空间,所以必须用一个指针来存储该地址;而在LZ的定义中哪个句子语法也是错的 .至于LZ的心得体会,也是存在误区,LZ好好体会下 下面两个句子 可能就会明白:
char values[5]={'a','e','i','o','u'};//声明并初始化一个包含5个字符的数组.
char values[]="aeiou";//声明一个char类型的数组并初始化为一个字符串字面量,包含6个字符 包括'\0'.
yanxiaotao 2009-02-27
  • 打赏
  • 举报
回复
在概念上就不对,就不用在讨论什么语法了!!!
yanxiaotao 2009-02-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 xwmr1988 的帖子:]
#include <iostream.h>
void main()
{
char s[6];
s=new char[6];
s="string";
cout < <s;
}
有什么错误?
[/Quote]
晕。
s是一个局部数组的首地址,它就固定了,是不能在把它指向一个内存空间的。
char s[6];
s=new char[6];
s="string";
上面这三句根本就不能同时出现的。
xwmr1988 2009-02-27
  • 打赏
  • 举报
回复
抱歉写错一个,s[3]=[i]; 改成s[3]='i';

xwmr1988 2009-02-27
  • 打赏
  • 举报
回复
我也同意11楼的说法,今天问了下老师,11楼的说法可以解释通,我把正确的写法公布一下:
#include <iostream.h>
void main()
{
char s[7];
s[0]='s';
s[1]='t';
s[2]='r';
s[3]=[i];
s[4]='n';
s[5]='g';
s[6]='\0';
cout<<s;
}
体会:char s[7];在定义时已分配了7个空间,所以不需要再分配空间了,且必须一个个的赋值。
shuchuanyu 2009-02-27
  • 打赏
  • 举报
回复
同意[Quote=引用 11 楼 kkndciapp 的回复:]
s视作指针常量,指向不能改来改去
[/Quote]
passionboy03 2009-02-27
  • 打赏
  • 举报
回复
你给S=“string”这么赋值是不行的,看前面怎么定义s的,是一个数组,相当于s[0] = "string",定义成char* s应该就没事了;
[Quote=引用楼主 xwmr1988 的帖子:]
#include <iostream.h>
void main()
{
char s[6];
s=new char[6];
s="string";
cout < <s;
}
有什么错误?
[/Quote]
八级程序员 2009-02-26
  • 打赏
  • 举报
回复
yyy.cpp:116: error: invalid conversion from `char*' to `char'
yyy.cpp:117: error: incompatible types in assignment of `const char[7]' to `

修改:
char *s;
s=new char[6]; //这里 改称char[7]更好
s="string";
cout <<s;

呵呵,我才鸟一个,只能告诉你一点!
kkndciapp 2009-02-26
  • 打赏
  • 举报
回复
s视作指针常量,指向不能改来改去
owldestiny 2009-02-26
  • 打赏
  • 举报
回复
不能直接赋值
飞哥 2009-02-26
  • 打赏
  • 举报
回复
编译都能问题
xwmr1988 2009-02-26
  • 打赏
  • 举报
回复
6楼的大虾,您提供的办法看似可行,其实不行啊
fanchangyong 2009-02-26
  • 打赏
  • 举报
回复
长度改成7,数组越界
shilingk1 2009-02-26
  • 打赏
  • 举报
回复
加上#include<string>试试

s="string";
不是string类的话,这里不能直接赋值吧
xwmr1988 2009-02-26
  • 打赏
  • 举报
回复
这样写我也知道啊,我想明白一楼的代码究竟错在哪里啊
xwmr1988 2009-02-26
  • 打赏
  • 举报
回复
这样写我也知道啊,我想明白一楼的代码究竟错在哪里啊
wolflion 2009-02-26
  • 打赏
  • 举报
回复

# include <iostream>
using namespace std;
# include <windows.h>

int main()
{
//char *s = "string";
//*s = "string";
char *s = new char[7];
s = "string";
cout<<s;
system("pause");
}
xwmr1988 2009-02-26
  • 打赏
  • 举报
回复
不是啊,写成7也不对啊,你可以式一下啊
加载更多回复(1)

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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