小蚂蚁学习C语言(16)——C语言指针——经典指针小程序和常犯错误

经典指针程序,互换两个数字

# include <stdio.h>
void swap(int * p, int * q)
{
    int t;
    if(*p < *q)
    {
        t = *p;
        *p = *q;
        *q = t;
    }
    return;
}
int main(void)
{
    int i = 5;
    int j = 7;
    swap(&i, &j);
    printf("i = %d\nj = %d\n",i ,j);
    return 0;
}

    常见的小错误

# include <stdio.h>
int main(void)
{
    int i = 3;
    int * p;
    int * q;
    p = &i;
    // *q = p  //error 语法编译出错
    // *q = *p    //error
    p = q;    //q是垃圾值,q赋给p,p也编程垃圾值
    printf("%d \n",*q);
    /*
        q的空间是属于本程序的,所以本程序可以读写q的内容,
        但是如果q内部是垃圾值,则本程序不能读写*q的内容
        因此此时*q所代表的内存单元的控制权限并没有分配给本程序
        所以本程序会出现运行错误。
    */
    return 0;
}


你可能感兴趣的:(C语言)