zoukankan      html  css  js  c++  java
  • 指针存的是什么?

    int a = 3;
    int* p = &a;

    一句话:变量名即地址!
    a所在地址 存储的是 数字3
    p所在的地址 存储的是 a的地址 也就是p的值为a的地址
    *p解地址,p为a的地址 所以*p就是a的值 故*p=3。

    指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。

    指针变量存放的是内存地址,那为什么指针还要定义类型? - 知乎 https://www.zhihu.com/question/29622405


    指针就是一个存放地址的变量 

    当指针指向某个变量

    这时这个指针里就存放了那个变量的地址

    同时可以利用指针直接取变量中的值用 只要在指针前加 * 就是取其
    真值了(也就是被指向的变量的值) 

    举个例子 
    int i=0,*p;
    声明了一个 int 类型的 变量i和指针p

    假设i在内存中所存在的地址为aaaaa(随便写的)

    p->i 就是使指针p指向i
    也就是说 指针p中存放了aaaaa这个地址

    当你操作这个p时就是直接操作了aaaaa这个地址中存放的东西

    间接操作了变量i,

    这就是指针的作用

    C语言中指针变量是存在哪里的?

    比如
    我们的全局和静态变量放在全局区,生命周期是整个程序运行期间
    我们的局部变量是放在栈区,模块执行结束后退栈
    我们程序员自己开的内存是放在堆区,用完自己free

    那指针算什么?是放在哪里的?
    比如我
    int *a;
    a =(int*) malloc(10*sizeof(int));

    这个a指向的内存是在堆上
    但是a指针本身的4个字节是放在哪里的?
     
    1、指针变量和普通的变量一样,编译期储存在代码当中,运行期间储存在内存里。c语言的变量值是通过该变量的内存地址寻址得到的,而对于一个已经编译好的程序,变量的地址都是确定的值,不可以更改。这是因为程序在编译时编译器已经通过语法分析把指针变量的地址值计算出来了,所以指针变量实际上不用保存在内存堆栈或数据段中,而是包含在汇编代码里面。
    2、指针变量里面就是整型的一个十六进制数,用来表示的就是指向某个变量的地址;
    指针是C语言中广泛使用的一种数据类型;
    利用指针变量可以表示各种数据结构;
    能很方便地使用数组和字符串;
    并能象汇编语言一样处理内存地址,从而编出精练而高效的程序;
    指针极大地丰富了编程语言的功能。
  • 相关阅读:
    10 个深恶痛绝的 Java 异常。。
    为什么公司宁愿 25K 重新招人,也不给你加到 20K?原因太现实……
    推荐一款代码神器,代码量至少省一半!
    Spring Cloud Greenwich 正式发布,Hystrix 即将寿终正寝。。
    hdu 3853 LOOPS(概率 dp 期望)
    hdu 5245 Joyful(期望的计算,好题)
    hdu 4336 Card Collector(期望 dp 状态压缩)
    hdu 4405 Aeroplane chess(概率+dp)
    hdu 5036 Explosion(概率期望+bitset)
    hdu 5033 Building (单调栈 或 暴力枚举 )
  • 原文地址:https://www.cnblogs.com/wxl845235800/p/7449202.html
Copyright © 2011-2022 走看看