简单问题:初始化指针问题。

dophin1003 2005-03-24 02:36:32
char *p1 = (char *) malloc(sizeof(char) * 10);
我给p1分配了空间后,就用了,在它指向的地址空间写入"hello\0"
之后,我又想重新写入"add\0"。那么我该如何清空之前写入的"hello\0"呢?

不可能是重新分配空间吧?
free(p1);
p1 = (char *) malloc(sizeof(char) * 10);
这样的话,等于要先释放原来的空间,然后再分配。
有没有其他方法能直接将原有空间里的内容清空呢?
...全文
149 点赞 收藏 15
写回复
15 条回复
heskyII 2005年03月24日
回复人: mynamefmm(风满满)
还有
char *p1
*p1="add"
这样没对p1初始化 p1的值是随机的
直接对它赋值会不会发生错误?
//////////////////////////////
肯定错三,在p1被初始化前,对其进行赋值,绝对危险,编译也会报错.
以后遇到多了就会慢慢理解地
回复 点赞
dophin1003 2005年03月24日
char *p1
p1="add"
这样就不会错
这样是把常量字符串的地址赋给指针变量。
回复 点赞
mynamefmm 2005年03月24日
还有
char *p1
*p1="add"
这样没对p1初始化 p1的值是随机的
直接对它赋值会不会发生错误?
回复 点赞
mynamefmm 2005年03月24日
楼上的
运行的结果是什么那?
我是新手
回复 点赞
kobefly 2005年03月24日
回复人: dophin1003(浮云~~~) ( ) 信誉:100 2005-03-24 15:33:00 得分: 0


那这个memset是否可以直接初始化呢?
可以这样吗:
char *p1;
p1 = memset(p1,‘’,10);


-------------------------------------------------------------------
可以得
下边是msdn得例子

#include <memory.h>
#include <stdio.h>

void main( void )
{
char buffer[] = "This is a test of the memset function";

printf( "Before: %s\n", buffer );
memset( buffer, '*', 4 );
printf( "After: %s\n", buffer );
}
回复 点赞
mynamefmm 2005年03月24日
char *p1
*p1="add"

p1没被初始化里面的值是随机的 直接对他赋值会不会发生错误?
回复 点赞
dophin1003 2005年03月24日
那这个memset是否可以直接初始化呢?
可以这样吗:
char *p1;
p1 = memset(p1,‘’,10);
回复 点赞
galanz 2005年03月24日
哦,你看还是得m e m s e t 打扫干净再加工
回复 点赞
kobefly 2005年03月24日
dophin1003(浮云~~~) ( ) 信誉:100 2005-03-24 15:02:00 得分: 0


这么说,可以用strcpy(p1,“”)来清空了?
因为我还要一个字符一个字符的写进去,并不是拷贝字符串。


o
你要一个一个写
得先清空
用memset(p1,0,10);

然后再写入
回复 点赞
dophin1003 2005年03月24日
这么说,可以用strcpy(p1,“”)来清空了?
因为我还要一个字符一个字符的写进去,并不是拷贝字符串。
回复 点赞
dongpy 2005年03月24日
用strcpy(p1,"add"),直接覆盖原来的内容就可以了。

这样,p1指向的内容就是add\0 o\0
回复 点赞
sunsky8 2005年03月24日
zengwujun(月之海)的方法是错误的,这样使得指针p1指向了字符串常量“add”,你来个free(p1)看看。
回复 点赞
zengwujun 2005年03月24日
p1="add";
回复 点赞
galanz 2005年03月24日
m e m s e t
回复 点赞
kobefly 2005年03月24日
不用得

直接

strcpy(p1, "add");
就可以了
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告