64,654
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
int main()
{
char *a = NULL;//"test";
char b[5]= "test";
strcpy(b,a);
std::cout<<b;
system("pause");
}
#include<iostream>
int main()
{
char *a = NULL;//"test";
char b[5]= "test";
a = (char*)malloc(sizeof(char)*strlen(b));
strcpy(a,b);
std::cout<<b;
free(a);
system("pause");
}
char *strcpy(char *dest, const char *src);
//是通过src地址找到src中内容,仅仅把内容拷贝到dest这篇地址空间上而已!
//他们各自的地址是没有改变的!
a = "ss"; //这个操作是把"ss"它的地址赋值给a,a的地址已经改变了
[/quote]总算是明白了,感激不尽呐!
char *strcpy(char *dest, const char *src);
//是通过src地址找到src中内容,仅仅把内容拷贝到dest这篇地址空间上而已!
//他们各自的地址是没有改变的!
a = "ss"; //这个操作是把"ss"它的地址赋值给a,a的地址已经改变了
#include<iostream>
int main()
{
char *a = "l";//"test";
char *b= "test";
a = "ss";
//strcpy(a,b);
std::cout<<a;
system("pause");
}
[/quote]
你修改a是修改的a的指向,不能修改的是用下表操作时[/quote]恩,这个我明白了,你能解答一下看看我18楼的问题么…#include<iostream>
int main()
{
char *a = "l";//"test";
char *b= "test";
a = "ss";
//strcpy(a,b);
std::cout<<a;
system("pause");
}
[/quote]
你修改a是修改的a的指向,不能修改的是用下表操作时
char *a = "l";//"test";
a = "ss";
// 亲, 你这不是修改好吧!
//你只是把ss的地址赋值给了a而已,让a从新指向了一个只可读区间
//可以打印地址看看嘛!很基础的,看看书吧!
#include<iostream>
int main()
{
char *a = "l";//"test";
char *b= "test";
a = "ss";
//strcpy(a,b);
std::cout<<a;
system("pause");
}
char *a = "k"; //这个是常量字符串,存放在静态区,只可读,不可改!!!!
//有时间看看内存管理吧!