指针终结者(1)- C语言版

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
//我的电脑内存是8个G所以,就是有80个G的字节
//变量a,b,b,这些变量都是保存在哪里? 在内存里
//内存中的每一个字节都有地址,也就是说80亿个字节就有80亿个地址
//而地址是从零开始编号的,即:第一个字节就是0
//即 地址就是这样编号的:0,1,2,3,4 ...... 80亿
//你可以想象在内存中已经给每个字节编好号了,一个接着一个......,而这就是所谓的地址

    

//每一次执行变量的地址都会在内存中重新分配,所以在黑窗口中的地址可能会不一样

    int a;//那么a变量有4个字节,那么按理说就有4个地址
    int b;
    float c;

//这个*是指针,在这里我们定义了一个变量d,而*说明它是一个指针,而它指向的是一个int类型
    int *d;
//一个指针占用4个字节,但是也分指向的数据类型,比如double就是8个字节
    float *e;//e是一个指针

    char c1,c2,c3,c4,c5;

    int *k;//没有初始化,即指针k里面没有一个有效的数字,我们就去操作的话
    //如果这个k等于这个b的话

    k = &b;
    //当我们使用完了这个指针后,我们可以让他指向另外一个变量
    k = &a;

    d = NULL;//指向d就没有指向任何地址

    /*注意在使用指针的时候一定要注意指针的状态*/
    /*如果没有初始化,那么很明显不能使用*/
    /*但是如果我们把指针让它指向一个有效的地址
      那么就可以使用了,而且使用的时候可以随意的
      更改,当我们我不想让这个指针指向指向任何
      一个地址的时候,我们就使它为null,而null实际上就是0
      但是最好写成NULL,这样更加醒目,
      而且在计算机中0这个地址是不会给我们使用的,
      0的地址所以说非常特殊,我们用的一般是100万
      之后的地址,100万前一般是操作系统占据的 */

    *k = 66;//这里就是修改b的值

    /*如果是这样写的话
    int *k;//没有初始化
    这个k没有指向一个有效的变量
    k = 99;//这样做是不允许的,它不会改掉任何一个字节
    所以上面这个操作是一个无效的操作

    所以指针一定需要初始化,让指针里面要有一个有效的地址,这样后才能使用指针
    */


    c1 = 'a';//一个字符就是一个字节
    c2 = 'b';
    c3 = 'c';
    c4 = 'd';
    c5 = 'e';


    a = 112;
    d = &a;//这里是把a的地址编号赋值给d
    e =  &c;

    b = -1;
    c = 3.14;

    /*把debug换成Release才能准确地看到指针,地址,因为调试状态下,地址是不准确的*/


    //而这个*是间接访问,也叫做解引用指针
    printf("a = %d\n",*d);//通过指针d,间接地访问a

    
    //通过指针间接操作
    *d = 88;//这里修改的变量a,原来是112,现在88;


    printf("a的地址:%d\n",&a);
    printf("d的地址:%d\n",d);

    printf("%d\n",a);
    //打印变量a的地址,&这个标志表示取某个变量的地址
    //首先变量a占用了4个字节,那我们通常把这4个字节的首字节的地址作为变量a的地址
    printf("%d\n",&a);//1703740

    
    printf("%d\n",b);
    //打印变量b的地址
    printf("%d\n",&b);//1703736 它和a的地址刚好相差4个字节
    
    
    printf("%f\n",c);
    //打印变量C的地址
    printf("%d\n",&c);


    //查看刚刚定义的五个字符的地址
    printf("%d\n",&c1);
    printf("%d\n",&c2);
    printf("%d\n",&c3);
    printf("%d\n",&c4);
    printf("%d\n",&c5);

    printf("yes\n");//printf这个函数是在<stdio.h>这个头文件里面

    
    /*由于如果没有system这个函数的话,那么这个黑窗口就会闪一下就退出了*/
    system("pause");//system()这个函数是在<stdlib.h>这个头文件里面

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值