回复 18楼 wangchengbin
以程序进行说话,理解一下偶第一行的说明,然后想想下面的一个简单的交换程序,思考一下结果,运行一下。任何时候,编译器都会准确的告诉你的运算结果,不能想当然,
在不确定的时候,可以用printf打印一下值,比如说你在strcpy之前,你打印一下str指向哪里就会明白。
#include<stdio.h>
#include<stdlib.h>
//两段函数,你认为哪个可以交换两个数??
void swap1(int *a, int *b)
{
int *temp;
temp = a;
a = b;
b = temp;
}
void swap2(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
int main(int argc, char **argv)
{
int c = 3, d = 5;
swap1(&c, &d);
printf("c = %d, d = %d\n", c, d); //交换了么?没有!!
swap2(&c, &d);
printf("c = %d, d = %d\n", c, d); //交换了么?交换了!!
return 0;
}
这个例子和你刚才的问题都是一回事,如果你能理解这个例子,那么也能理解为什么你的代码用了指针,但还是没有得到那块函数内分配的内存。
另外,你的程序结束时没有释放内存。
[ 本帖最后由 hellovfp 于 2012-7-8 12:22 编辑 ]
我们都在路上。。。。。