LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: ytaome

为什么出现段错误呢?请指点一下好吗?

[复制链接]
 楼主| 发表于 2007-2-27 12:56:18 | 显示全部楼层
Post by 生来自由
  p 没有必要赋予初值。strcpy(p,"")可以赋予p初值,char *p 也可以。其实char p[]和char *p 中的p是同一个类型(type)。

个人感觉如果是清空一个char array的话,p[0] = '\0'就可以了。


谢谢。
那么,char *p;和char p[256]是不是都可以直接使用fgets()赋值呢?听说刚char *p时候p在内存里没有定位,赋值有可能破坏别处的数据,是不是这样呢?这是怎么一回事可以讲一讲吗?
回复 支持 反对

使用道具 举报

发表于 2007-3-2 11:10:48 | 显示全部楼层
char *p 是一个 pointer (指针?), 它所指的地方未必是可用的内存。所以一般都用new在heap上整理出一段可用的内存,然后在将p赋值。

我讲的可能不是很清楚,如果不懂的话可以Google一下这方面的资料或系统的学一下C/C++。

http://www.chips.navy.mil/archives/99_apr/c++arrays.htm
这里提供了一些有关array和内存基本的信息,不过是英文的,希望能有帮助。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-3 17:26:55 | 显示全部楼层
好的我去瞅瞅,谢谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表