C语言指针学习中易犯的错误

1、向null地址处copy数据

char *str = NULL;
strcpy(str,"aaaaabbbbb");

错误!
NULL是操作系统保护的空间,不能往里面拷贝数据;

2、void Swap(int a,int b)

//错误案例
//不能实现实参a,b的互换
void Swap(int a,int b)
{
   int tmp = a;
   a = b;
   b = tmp ;
}

在函数调用时,把实参取地址传给形参
用1级指针形参,可以间接修改0级指针(实参)的值
用2级指针形参,可以间接修改1级指针(实参)的值
.
.
.
用n级指针形参,可以间接修改n-1级指针(实参)的值
正确案例:

void Swap(int *a,int *b)
{
    //int *tmp = NULL;   向null地址处copy数据,出错;解决办法如下行代码所示
    int *tmp = (int *)malloc(sizeof(int));
   *tmp = *a;
   *a = *b;
   *b = *tmp ;
   free(tmp);
}

猜你喜欢

转载自blog.csdn.net/Castiellee929/article/details/88948939