C语言指针

来源:互联网 发布:网络布线验收报告 编辑:程序博客网 时间:2024/05/29 18:35

准备复习C指针,本博客长期更新

地址和内容概念

int main(){    int i=3;    int *pointer;    pointer=&i;    printf("%d",*pointer);    return 0;}

输出:
3

int main(){    int i=3;    int *pointer;    pointer=&i;    printf("%d",pointer);    return 0;}

输出:
4783112 此时为地址

倘若

int main(){    int i=3;    int pointer=&i;    printf("%d",pointer);    return 0;}

编译出错

指针变量

使用指针变量

int main(){    int a=100,b=10;    int *p1,*p2;    p1=&a,p2=&b;    printf("*p1=%d,*p2=%d",*p1,*p2);}

输出
*p1=100,*p2=,10

定义指针变量

    float *p1;    char *p2;    int a,b;    int *p3=&a,*p4=&b;    int *p5;    p5=&a;    p3=2000;//错误

引用指针变量

  1. 给指针变量赋值:p=&a;
  2. 引用指针变量指向的变量:p=&a;*p=1;printf(“%d”,*p);
  3. 引用指针变量的值,printf(“%o”,p);//输出变量地址

输入两个整数,按先大后小的顺序输出

int main(){    int *p1,*p2,*p,a,b;    a=1;b=3;    p1=&a;p2=&b;    if (a<b){        p=p1;p1=p2;p2=p;    }    printf("a=%d,b=%d\n",a,b);    printf("*p1=%d,*p2=%d\n",*p1,*p2);}

这里写图片描述

注意:如果改成p1=&b;p2=&a;

相同结果


指针变量作为函数参数

void swap_(int *p1,int *p2){    int tem;    tem=*p1;*p1=*p2;    *p2=tem;}int main(){    int *p1,*p2,*p,a,b;    a=1;b=3;    p1=&a;p2=&b;    if (a<b){        swap_(p1,p2);    }    printf("a=%d,b=%d\n",a,b);    printf("*p1=%d,*p2=%d\n",*p1,*p2);}

这里写图片描述


错误1:tem是地址,不能保存数据

void swap_(int *p1,int *p2){    int *tem;    tem=*p1;*p1=*p2;    *p2=tem;}

错误2:tem是地址,*tem是数据,但是tem无确定指向

void swap_(int *p1,int *p2){    int *tem;    *tem=*p1;*p1=*p2;    *p2=*tem;}

错误3:实参与形参问题

void swap_2(int p1,int p2){    int tem;    tem=p1;p1=p2;    p2=tem;}

错误2:实参与形参问题,结果不会有所改变

void swap_2(int p1,int p2){    int tem;    tem=p1;p1=p2;    p2=tem;}

通过指针引用数组

指针变量作为函数参数

0 0