注册 登录
编程论坛 C++教室

这段程序有错吗?

LSW734371815 发布于 2012-02-25 13:50, 652 次点击
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    const char *cp1="hello world";
    const char *cp2="thank you very much";
    strcat(cp1,cp2);
    cout<<cp1<<endl;
    return 0;
}//总是出现:'strcat' : cannot convert parameter 1 from 'const char *' to 'char *'
7 回复
#2
znf8611262012-02-25 14:19
const char* cp1指向的是常量字符串,常量的值是不能改变的,将const char* cp1 改成char* cp1即可.
#3
pangding2012-02-25 14:26
最入门的书里应该也有讲 strcat 怎么使的。你自己百度一下也可以。
#4
心痛2012-02-25 16:17
cp1没有空间用来存储cp2的内容
#5
ningtieming2012-02-26 15:12
你已经声明cp1是指向常量的指针,所以不可以通过strcat()函数来改变它的值
#6
Auris2012-03-02 13:39
你好!!!
int me;   
const int * p1=&me;//p1可变,*p1不可变,此时不能用*p1来修改,但是p1可以转向   
int * const p2=&me;//p2不可变,*p2可变,此时允许*p2来修改其值,但是p2不能转向。   
const int *const p3=&me;//p3不可变,*p3也不可变,此时既不能用*p3来修改其值,也不能转向

以后会用的着的!!!
#7
Auris2012-03-02 13:48
回复 2楼 znf861126
//  char *cp1="hello world";
    const char *cp2="thank you very much";
    strcat(cp1,cp2);
    cout<<cp1<<endl//
*cp1是指针变量,无法确定大小;而strcat(cp1,cp2);cp1的长度必须能够容纳cp1+cp2的长度;
所以应该用new给cp1分配长度为cp1+cp2的空间,
否则结果无法written;
#8
BianChengNan2012-03-02 15:11
看来楼主要学会查msdn,看编译错误啊,多努力
1