• c基础-指针


                  

                      ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

    1.指针的定义: 数据类型 *指针变量名

    2.指针的赋值:指针变量名=&... 或者 指针变量名 =数组名

    注意:定义的时候 * 仅代表这是在定义一个指针变量,没有其他的意义

    eg.

    int main()
    {
        int *p;//定义指针变量
        int a=10;
        p=&a;//给指针变量赋值,给的是变量a的地址符
        printf("%d",*p);//获取指针变量的值  
                  
    }

    3.指针操作数组时,因为数组是属于引用类型的,所以将数组名直接赋值给指针,就相当于把数组的地址给了指针

    eg .

    int main()
    {
        
        char *p;//定义指针变量
        char arr[]={'a','b','c',''};
        p=arr;//给指针变量赋值 也可以 p =arr[0]
        
        //利用指针访问数组
        
        printf("%c",*(p+1)); //代表获取数组从0+1位置点元素
        printf("%c",*p); //访问的是数组的第0个元素
        
        return 0;
    }

     4.指针指向函数

      定义要指向函数的指针: 函数的返回值 (*指针变量名)(参数类型,...)

      给指针变量赋值:指针变量名=函数名称

      调用指针(相当于调用函数):指针变量名(参数值,...)或者(*指针变量名)(参数值,...)

      作用:这个指针就是用来间接调用函数的

    eg.

    #include <stdio.h>
    
    //声明函数
    int test(int,int);
    
    int main()
    {
       //定义指向函数的指针
        int (*p)(int,int);
        //给指针赋值
        p=test;
        //利用指针调用函数,并接受返回值
        int sum=  p(1,2);
        int sum2= (*p)(10,20);
        //输出
        printf("sum=%d,sum2=%d",sum,sum2);
        
        return 0;
    }
    //定义函数
    int test(int a,int b)
    {
        return a+b;
    }

    5.返回指针的函数

      定义函数:返回值类型 *函数名(){}

    #include <stdio.h>
    
    //声明函数
    char *test();
    
    int main()
    {
        //调用指针函数
        char *result=test();
        //输出
        printf("%s",result);
        return 0;
    }
    //定义函数
    char *test()
    {
        return "abc";
    }

    6.指向指针的指针

      定义:数据类型 **指针变量名

      赋值:指针变量名=&变量

    int main()
    {
        
        int  a=10;
        //定义指针,指向a
        int *p=&a;
        //定义指向指针的指针
        int **p2;
        //给p2赋值
        p2=&p;
        
        //利用指针指向a改变a的值
        *p=20;
        printf("p改变:a=%d
    ",a);
        //利用指向指针的指针改变a的值
        *(*p2)=30; //*p2  就代表指向指针p ,然后再加上 * 就相当于利用指针p去访问a
        printf("p2改变:a=%d",a);
        return 0;
    }
  • 相关阅读:
    Core Data入门
    web前端开发与iOS终端开发的异同
    Blocks编程
    ARC下循环引用的问题
    小项目
    error: /Users/**/Documents/workspace/***/clean_right_normal.png: No such file or directory
    修复NSTextAlignmentCenter引起的警告
    Implicit conversion loses integer precision: 'long long' to 'NSUInteger' (aka 'unsigned int')
    手势相关函数
    implicit declaration of function setxattr is invalid in c99
  • 原文地址:https://www.cnblogs.com/hui1107464497/p/4531892.html
Copyright © 2020-2023  润新知