美文网首页
再学C语言之指针要点

再学C语言之指针要点

作者: 温柔倾怀 | 来源:发表于2019-09-29 08:30 被阅读0次

    C之字符数组

    #include <stdio.h>
    int main(){
        //printf("hello world;");
        char name[6] = "nihao"; //对于字符串来说,会自动在隐藏一个\0,并不需要我们手动去添加
        //char name[5] = "nihao" 只分配5个是错误,自动隐含了\0,要分配6个
        //char name[] = {'n','i','h','a','o','\0'};//两种情况不一样
        printf("%s",name);
        return 0;
    }
    
    

    C之指针引用字符串

    #include <stdio.h>
    
    int main(){
        char *name="wenrou";//“wenrou”-->字符串常量,空间在静态常量区
        //name[0]='W';//这种做法是错误的,不能通过指针改变字符串常量的任何内容
        return 0;
    }
    

    C语言之数组指针

    #include <stdio.h>
    
    int main(){
        int br[3][4]={0};
        int (*p)[4] = br;
        //事实上并不存在什么二维数组,只是一维数组的元素仍是一个一维数组
        //br的首元素仍是一个数组,定义一个指针指向这个首元素数组
        return 0;
    }
    
    

    数组指针:首先它是一个指针,它指向数组
    指针数组:首先它是一个数组,它存放指针

    #include <stdio.h>
    
    int main(){
        //数组指针
        int ar[3]={0};
        int (*p)[3] = &ar;
        //指针数组
        int a=1,b=2,c=3;
        int *br[3]={&a,&b,&c};
        return 0;
    }
    
    

    函数指针:指向函数的指针

    #include <stdio.h>
    
    int fun(int a,int b){
        return a+b;
    }
    
    int main(){
        //函数指针  
        int (*pfunc)(int ,int);
        pfunc=fun;
    
        return 0;
    }
    
    

    指针函数:返回指针的函数

    int* fun1(int a,int b){
        static int x=a+b;
        return &x;
    }
    

    不能定义void类型的变量,可以定义void类型的指针。指针大小是确定的。

    指针数组作为main函数的形参


    首参数为该程序的路径(自动传递)


    结构体指针

    #include <stdio.h>
    
    int main(){
    
        printf("hello world!\n");
        typedef struct Student{
            int id;
            int age;
        }Stduent;
        Student s1 = {1,11};
        printf("id: %d ,age: %d \n",s1.id,s1.age);
        Student *p1 = &s1;
        printf("id: %d ,age: %d \n",p1->id,p1->age);
    
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:再学C语言之指针要点

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