首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

char指针有关问题

2012-04-01 
char指针问题为什么*s1 *s2不行啊?int main(void){char* s1 Hello, World!\0char* s2 abcdef\0

char指针问题
为什么*s1 = *s2;不行啊?

int main(void)
{
char* s1 = "Hello, World!\0";
char* s2 = "abcdef\0";
printf(s1);
s1++;
s2++;
*s1 = *s2;
printf(s1);
return 0;
}

[解决办法]
(1)
char* s1 = "Hello, World!\0";
char* s2 = "abcdef\0";
"Hello, World!\0",和"abcdef\0"存储在常量数据区,是只读的,所以*s1 = *s2,是不对的
(2)
char str1[] = "Hello, World!\0";
char str2[] = "abcdef\0";
"Hello, World!\0",和"abcdef\0"存储在常量数据区,是只读的,但是其在数组str1,str2中都存在有一个副本,
但是需要注意 str1,str2,指向各自数组首元素的地址,是个常量,所以str1++,str2++也是错误的
(3)
char str1[] = "Hello, World!\0";
char str2[] = "abcdef\0";
但是可以定义 两个指针变量 char* p1=str1;char* p2=str2; 这时候 p1,p2都是指针变量,且所指向的内容是可读写的,这样 *p1++=*p2++;才正确

热点排行