标题:C语言,关于指针,写入变量的问题,求高手多多指点,谢谢!!谢谢!!
取消只看楼主
weishen2011
Rank: 2
等 级:论坛游民
帖 子:92
专家分:70
注 册:2012-10-16
结帖率:80%
已结贴  问题点数:10 回复次数:1 
C语言,关于指针,写入变量的问题,求高手多多指点,谢谢!!谢谢!!
#include<stdio.h>
#include<stdlib.h>
int main()
{
char str[]="hello";

printf("请输入一个字符串:\n");
scanf("%s",str);

printf("您输入的字符串为:%s\n",str);
printf("还能做做剩下的工作吗?!");
system("pause");
return 0;
}
为什么指针指向常量字符串的情况下还可以写入其他的字符串啊???
搜索更多相关主题的帖子: 工作 include system return 
2012-11-22 12:12
weishen2011
Rank: 2
等 级:论坛游民
帖 子:92
专家分:70
注 册:2012-10-16
得分:0 
以下是引用liufashuai在2012-11-22 15:56:10的发言:

其实是楼主理解错了,数组是常量指针,是指的数组名字是常量指针,该指针不能赋值,也就是数组名不能重新赋值
在不改变该指针的指向的情况下,改变数组内的数据是允许的
因为数组空间分配在栈上,只是用字符串常量初始化,所以,即使你改变了数组内的内容,常量存储区的字符串还是没有改变
是可以的

但是如果你定义的是一个指针的话,指针赋值直接指向常量区,那就不能更改了,如果改了,可能能通过编译链接(我在VC6.0下试过了,如果编译器检查比较严格,可以在编译器见检查出来)
但是运行肯定会报错的(一般式什么地址不可写)


为什么用数组定义的时候数组内数据能改,用指针定义就不行了呢?还是不太理解!
数组名不就相当于一个指针吗?指向数组的起始地址!为什么指针定义的就不能修改,而数组定义的就可以呢??
2012-11-22 22:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-387917-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.192077 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved