Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1362971
  • 博文数量: 284
  • 博客积分: 3251
  • 博客等级: 中校
  • 技术积分: 3046
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-26 17:23
文章分类

全部博文(284)

文章存档

2019年(2)

2018年(5)

2015年(19)

2014年(13)

2013年(10)

2012年(235)

分类: C/C++

2012-08-24 22:41:09

对c下的指针总有一种畏惧感,动不动就出现各种错误,先看一段程序吧:

复制代码
#include
#include <string.h>
int main(void)
{
char *buf;               //定义char指针
char *string = "hello ";       //指向常量数据区的“hello”字符串
buf = string;               //将指向常量的指针赋值

printf("buf=%s\n ", buf);
strcpy(buf, "world");          //试图将常量数据区的 "world"字符串拷贝给指向常量数据区的buf
printf("buf=%s\n", buf);
return 0;
}
复制代码

于是在strcpy处,出现了段错误 Segmentation fault

解决办法:

一、buf没有空间,   应该用malloc分配空间

buf = malloc(4);

二、改变 string为:

char string[ ] = "hello";

这样,string是指向数组的指针,赋值后,buf也是指向数组的指针,再次调用strcpy时,就把“world”复制到数组中了!

三、可以直接赋值:

buf = "world";

 

小结:指针只存贮了一个地址,想把整个字符串复制给他,必须手动分配内存空间,或存放于数组之中。

阅读(3089) | 评论(0) | 转发(0) |
0

上一篇:Shell脚本编程详解

下一篇:字符串与指针

给主人留下些什么吧!~~