中易网

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

答案:2  悬赏:60  
解决时间 2021-04-27 14:13
  • 提问者网友:追忆成伤
  • 2021-04-27 07:07
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 就一定要分配空间,不然会出错。
最佳答案
  • 二级知识专家网友:短发女王川岛琦
  • 2021-04-27 08:03
你的意思是指针变量的初始化吧!
第一个函数中 p2 = p1; 就是让p2指向p1指向的内存空间。
而第二个函数中temp并未指向有效地址,编译器会报错!
这里不需要定义char *temp 只需一个char temp;即可!
全部回答
  • 1楼网友:情战凌云蔡小葵
  • 2021-04-27 08:48
如果”a结构体“是定义的话,如果是全局变量他在程序的数据段被开辟一块静态的内存,如果是局部变量那么会在运行栈上开辟内存,所以直接指向给一个指针是没有问题的。但如果是局部变量并且当前函数执行了ret,那么局部变量的内存就被回收了(寄存器ebp和esp都会增加而使局部变量失效)。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息