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

c语言字符串的有关问题

2012-12-29 
c语言字符串的问题#includestdio.h#includeiostream.hvoid main(){char p[10]nihaochar *mniaho

c语言字符串的问题
#include<stdio.h>
#include<iostream.h>
void main()
{
char p[10]="nihao";
char *m="niaho";c语言字符串的有关问题
*(m+1)='m';
p[1]='w';
*(p+1)='m';
cout<<p<<endl;
}


编译的时候还能通过,但是运行的时候就不行;
为什么我用字符数组存储字符串就能通过对地址取内容的方式修改字符串;
而用字符指针的时候却不行呢?
[解决办法]
char?*m="niaho";
m指向的内存属于只读内存,不能对其赋值
[解决办法]


对于指针形式,要注意两点:
  1、只有对字符串常量才这么分配,对 int 等基本类型的数据是不会这么分配内存的,例如:int *r=6; char *u='y'; 都是错误的。
  2、因为静态存储区的内容是不可以被更改的,所以类似于 *hi=某个值 等赋值语句都是不被允许的。而指针变量hi本身不在静态存储区,它的值是可以改变的,可以让指针变量hi指向另外另外的字符串,所以 char *hi="blue";是合法的。
详细的你可以去birduu.com上看看,那里还有数组形式和各种练习。

热点排行