美文网首页
C语言_指针

C语言_指针

作者: 拙峰朽木 | 来源:发表于2018-04-27 17:41 被阅读5次

@(C语言)

[toc]

指针:指针变量存储的是变量类型对应的变量的值

&(取地址符)

&:是一个操作符,运用在内存中的对象上面,即变量或者数组元素。

*(间接寻址符)

或者叫:引用运算符
表示指针指向。

int * p;

p 是一个指针变量名
*p 是从p指针变量中取出一个int型数据

指针


    int i =10;
    //int型的指针变量 *p 存储的是 int型的数据的变量的地址
    int *p;
    p =&i;
    printf("i 的值: %d \n",i);
    printf("i 的地址: %#X \n",&i);
    printf("p 的值: %#X \n",p);
    printf("p 的地址: %#X \n ",&p);

输出:
i 的值: 10
i 的地址: 0XEFBFF5AC
p 的值: 0XEFBFF5AC
p 的地址: 0XEFBFF5A0

所以:&是指向变量的地址
*是指向&变量的地址

指针的定义与运算

  int a =10;
    int *p =&a;
    *p = *p+10;
    printf("p: %#X, a: %d \n",p,a);
    int y = 1+*p;
    printf("y: %d \n",y);
    *p += 1;
    printf("p: %#X, a: %d \n",p,a);
    (*p)++;
    printf("p: %#X, a: %d \n",p,a);
    *p++;
    printf("p: %#X, a: %d \n",p,a);

输出:
p: 0XEFBFF5AC, a: 20
y: 21
p: 0XEFBFF5AC, a: 21
p: 0XEFBFF5AC, a: 22
p: 0XEFBFF5B0, a: 22

指针运算:
*p 代表是它所指的地址上面的值的运算
p++ 是p 指针变量++,结果就是:p指向它的下一个地址

数组与指针

数组名就是数组的首地址

//数组名就是数组的首地址
    int a[5]={1,2,3,4,5};
    int *p =a ;
    int z=3;
    printf("%#X \n",a);
    //a+5表示a移动到数组的第五个位置
    for (int i=0; p<a+5; p++) {
        *p =z;
    }
    for (int i =0; i<5; i++) {
        printf("%d \n",a[i]);
    }

输出:
0XEFBFF5A0
3
3
3
3
3

指针与函数参数

void swap(int *a ,int *b){
    int temp =*a;
    *a =*b;
    *b =temp;
    }

    int x =10;
    int y =20;
    swap(&x, &y);
    printf("x: %d \n",x);
    printf("y: %d \n",y);

输出:
x: 20
y: 10

指针数组与数组指针

char * name[] ={"hello","baby","dink","love"};
//那么name就是个指针数组

char (*name)[] ={"hello","baby","dink","love"};
//name是数组指针,指向数组的首地址

二级指针

 //二级指针存的内容是一级指针的地址
    // p的值就是p的这个变量,这个变量保存的是a 的地址
    //*p运算,得到的就是a的值
    //*p2运算,得到的就是p的值
    //**p2运算,得到的就是p的值的*运算得到的值 a;
    int a =100;
    int * p;
    p =&a ;
    
    int **p2;
    p2 =&p;
    
    // **p 的值是a--> *P2==P --->**P2==*P==a

函数指针

函数在内存中存储就是一段地址,而函数名就是这段地址的首位。

    //
    int plus(int a,int b){
    return a+b;
    }
    //返回类型+参数类型
    int (*calc)(int a,int b);
    calc =plus;
    int result =calc(3,5);
    printf("result :%d \n",result);

相关文章

  • C语言05- 指针

    C语言05- 指针 13:指针 指针是C语言中的精华,也是C语言程序的重点和难点。 13.1:指针定义与使用 指针...

  • 02-C语言的指针

    02-C语言的指针 目标 C语言指针释义 指针用法 指针与数组 指针与函数的参数 二级指针 函数指针 指针在C中很...

  • C语言指针总结大学霸IT达人

    C语言指针总结大学霸IT达人 C语言的指针是C语言区别其它语言的最主要的特定之一。有了指针,C语言就可以抛开所有束...

  • 带小白学C语言指针

    C语言里指针才是C语言的开始和指针;C语言里基本所有东西都是由指针演变而成; 指针是指向地址的变量,类型就是指针...

  • 在Swift中使用C语言的指针

    在Swift中使用C语言的指针 在Swift中使用C语言的指针

  • [Swift]结构体指针操作

    C语言的指针操作 在c语言中申明一个变量并通过指针修改该变量的值 a value is 2 c语言操作结构体指针操...

  • Go语言-指针

    Go语言中的指针不同于C语言,Go语言的指针使用方法要简单很多。当然和C语言从指针定义到指针的使用都有很大的不同。...

  • C语言中的指针与数组

    C语言中的指针与数组 @(C语言)[排序算法, 快速排序, C实现] 引言 相信指针与数组是不少同学在初学C语言时...

  • 指针数组和数组指针

    指针数组|存储指针的数组 在C语言和C++语言中,数组元素全为指针的数组称为指针数组。 例如:int *p[10]...

  • iOS开发 -- C语言基础8(指针)

    iOS开发 -- C语言基础8(指针) 指针是C语言中非常重要的数据类型,如果你说C语言中除了指针,其他你都学得很...

网友评论

      本文标题:C语言_指针

      本文链接:https://www.haomeiwen.com/subject/vhdilftx.html