C语言 指针问题 ,空间分配问题,地址问题

voiddelspace(char*p1){char*p2;while(*p1!='\0'){if(*p1==''){p2=p1;while(*p2!='\0'){*p2... void delspace(char *p1)
{
char *p2;
while (*p1 != '\0' )
{
if (*p1 == ' ')
{
p2 = p1;
while(*p2 != '\0')
{
*p2 = *(p2+1);
p2++;
}
p1--; //抵消下面的p1++
}
p1++;
}
}
这个函数去除字符串中的空格,为什么char *p2; 不给它分配空间。
void reverse(char *str)
{
int i = strlen(str);
int k = 0;
char *temp;
while(i-1-2*k >0)
{
*temp = *(str+k);
*(str + k) = *(str + i - 1 - k);
*(str + i - 1 - k) = *temp;
k++;
}
}
反序字符串的函数,temp 就一定要分配空间,不然会出错。
展开
 我来答
above霜天之上
2013-04-10
知道答主
回答量:25
采纳率:0%
帮助的人:17.6万
展开全部
你的意思是指针变量的初始化吧!
第一个函数中 p2 = p1; 就是让p2指向p1指向的内存空间。
而第二个函数中temp并未指向有效地址,编译器会报错!
这里不需要定义char *temp 只需一个char temp;即可!
neverfate
2013-04-10 · 超过10用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:27.3万
展开全部
上面函数中第一次使用p2是p2 = p1;让p2指向p1指向的内存,这样再*p2就可以得到p2所指向的值了。
下面的函数中char *temp;后并没给temp分配内存也没让它指向任何内存,这种情况下使用*temp就会报错,先给它指向一个地址就没事了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式