首页 > 其他 > 详细

指针的初步认识

时间:2021-05-16 14:12:15      阅读:13      评论:0      收藏:0      [点我收藏+]
#include <stdio.h>
int main()
{
    //显示变量的地址
    //指针是一个特殊的变量,存储的地址
    int i = 0;
    printf("0x%p\n",&i);
    //上面中的%p,指的是printf中以输出地址的占位符
    //&i,表示取指针,返回一个指向i的int类型指针,它存储的值是i的地址

    {
         printf("%i\n",&i);
         //%i  ,表示以十进制输出地址
        //会报两个警告,说类型不匹配
        //warning: format ‘%i‘ expects argument of type ‘int‘,  but argument 2 has type ‘int *‘ [-Wformat=]
    }

    return 0;
}

#include <stdio.h>
int main()
{
    int i=0;
    int *p;           //声明一个指针变量,* 用来说明该变量是一个指针
    p=&i;           //把i的地址赋值给指针p,也就是说p存了指向i的地址
    printf("&i=%p\n",&i);
    printf("p=%p\n",p);    //&i=000000000061FE14
                                       //p=000000000061FE14
    return 0;
}
#include <stdio.h>
int main()
{
    //通过指针进行读取
    int i = 9;
    int *p;
    p = &i;
    printf("%d\n",*p);      // * 指针运算符,指的是取它后面指针所指向的值   p是指针,存储着指向i的地址
    return 0;
}
#include <stdio.h>
int main()
{
    //通过指针对变量进行修改
    int i = 8;
    int *p = &i;
    printf("i=%d\n",i);
    printf("*p=%d\n",*p);
    *p=7;
    printf("i=%d\n",i);
    printf("*p=%d\n",*p);
    i=6;
    printf("i=%d\n",i);
    printf("*p=%d\n",*p);
    return 0;
}
i=8
*p=8
i=7
*p=7
i=6
*p=6
#include <stdio.h>
int main()
{
    //野指针
    int *p;
    printf("%p",p);
    return 0;
}
#include <stdio.h>
int main()
{
    //野指针
    int *p;
    printf("%p",p);
    *p=0;
    int *pInt=0;
    return 0;
}
#include <stdio.h>
int main()
{
    //更新指针保存的地址
    int i=10;
    int j=20;
    int *p=&i;
    printf("i的地址:%p\n",&i);
    printf("j的地址:%p\n",&j);
    printf("p保存的地址:%p\n",p);
    p=&j;
    printf("更改后地址\n");
    printf("i的地址:%p\n",&i);
    printf("j的地址:%p\n",&j);
    printf("p保存的地址:%p\n",p);
    return 0;
}
#include <stdio.h>
int main()
{
    //指针自身的地址
    int i=10;
    int *p=&i;
    printf("p的地址:%p\n",&p);
    printf("p保存的地址:%p\n",p);
    printf("p指向的变量的值:%d\n",*p);
    return 0;
}
#include <stdio.h>
int main()
{
    //指针的加减运算
    int i=10;
    int *p=&i;
    printf("指针p保存的地址为%p\n",p);
    p++;
    printf("自加后,指针p保存的地址为%p\n",p);
    p--;
    printf("自减后,指针p保存的地址为%p\n",p);
    p-=2;
    printf("减2后,指针p保存的地址为%p\n",p);
    return 0;
}
#include <stdio.h>
int main()
{
    //指针的赋值运算
    int i=10;
    int j=20;
    int *p1=&i;
    int *p2=&j;
    printf("p1=%p\tp2=%p\n",p1,p2);
    p1=p2;
    printf("p1=%p\tp2=%p\n",p1,p2);
    return 0;
}
#include <stdio.h>
int main()
{
    //指针的相减运算
    int i=10;
    int j=20;
    int *p1=&i;
    int *p2=&j;
    printf("p1=%p\n",p1);
    printf("p2=%p\n",p2);
    *p1=p1-p2;
    printf("p1-p2=%d\n",*p1);
    return 0;
}
#include <stdio.h>
int main()
{
    //指针的相减运算
    int i=10;
    int j=20;
    int *p1=&i;
    int *p2=&j;
    printf("p1=%p\n",p1);
    printf("p2=%p\n",p2);
    if(p1>p2)
        printf("p1的地址p2地址大\n");
    else
        printf("p2的地址比p1地址大\n");
    return 0;
}
#include <stdio.h>
int main()
{
    //指针的类型
    char ch;
    int i;
    char *pCh=&ch;
    int  *pInt=&i;
    printf("pCh保存的地址为:%p\n",pCh);
    pCh++;
    printf("自加后,pCh保存的地址为:%p\n",pCh);
    printf("pInt保存的地址为:%p\n",pInt);
    pInt++;
    printf("自加后,pInt保存的地址为:%p\n",pInt);
    return 0;
}
#include <stdio.h>
int main()
{
    //常量指针
    int i=0;
    int *const p=&i;
    //p++;//指针不可修改
    *p=1;
    i++;
    printf("i=%d\n",*p);
    return 0;
}
#include <stdio.h>
int main()
{
    //指向常量的指针
    int i=0;
    const int *p=&i;
    printf("*p=%d\n",*p);
    p++;
    //*p=1; 指针指向的是常量,不能修改
    printf("*p=%d\n",*p);
    return 0;
}
#include <stdio.h>
int main()
{
    //指向常量的常指针
    int i=0;
    const int *const p=&i;  //int const *p
    printf("*p=%d\n",*p);
    //p++;   //指针是常量,不能修改  
    //*p=1; //指针指向的是常量,不能修改
    printf("*p=%d\n",*p);
    return 0;
}
#include <stdio.h>
int main()
{
    //指向常量的常指针
    int i=0;
    int const *p=&i;  //int const *p
    printf("*p=%d\n",*p);
    p++;   //
    //*p=1; //指针指向的是常量,不能修改
    printf("*p=%d\n",*p);
    return 0;
}

指针的初步认识

原文:https://www.cnblogs.com/delongzhang/p/14773686.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!