2018-07-05

指针

第一节 什么是指针

关于指针一词,在K&R C中,有下面这样的说明。

  • 指针是一种保存变量地址的变量,在C中频繁地使用。

照字面意思来说,很容易把指针当成变量。但实际上并非如此。

此外,说道pointer,就离不开pointer type。但提到type,立刻就会让人想起“int type”,"double type"等。

所以,再回来说pointer type,他不是单独存在的,它是由其他类型派生而成的。所以说“int *”即指向int的pointer type

因为pointer type是type,所以它和int type,double type是一样的。也存在Pointer variablePointer value

*要点*:先有“point type,”所以有了"pointer variable"与“pointer value”。

例如,在C languange中。

    int a = 123;

int 是"type", a是"int variable",4 是“int type value”
同理:

    int *p = &xiaoming

int *是“type”,p是“pointer variable”, xiaoming该变量的地址称为“pointer type value”。


第二节 地址与“&”

几乎所有的处理程序中,所谓的“pointer type value”,实际是指内存的地址(Memory address)
变量的内容是保存在内存的某个地方的,“某个地方”的说法总是会让人产生困惑。因此,就像送快递的时候使用“门牌号”确定“地址”一样,在内存中,我们也给变量分配“门牌号”。在C的内存世界中,“门牌号”被称为地址。

#include <stdio.h> 

int main()
{
    int Rose = 23;
    int Jack = 25;
    int *Rose_P;
    
    /*输出Rose,Jack和Rose_P的住址在哪里*/
    printf("&Rose..%p\n",&Rose);
    printf("&Jack..%p\n",&Jack);
    printf("&Rose_P..%p\n",&Rose_P);

    /*将Rose家的住址赋予Rose_P*/
    Rose_P = &Rose;
    printf("Rose_P..%p\n",Rose_P);

    /*通过Rose_P输出Rose的值*/
    printf("*Rose_P..%d\n",*Rose_P);    
    /*注意,Rose的值是int type,所以用“%d” */
    /*十年过去了,Rose多大了呢,户口的年龄加10了,她的真正年龄呢*/
    *Rose_P += 10;
    printf("Rose..%d\n", Rose);

    return 0;
}
QQ截图20180704225429.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 7,604评论 0 3
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,744评论 0 38
  • 基本概念 1a general-purpose programming language用于创建计算机程序。艺术类...
    伍帆阅读 5,195评论 0 1
  • 昨天开始,一个紧急通知伴着另外一个紧急通知,内容都是和明天的大雨有关。 这场雨酝酿的时间了不短了,天气很闷。有时刮...
    67fbaec5208f阅读 1,657评论 0 0
  • 学习李笑来老师的课已经有一段时间了,但是还是没有管理好自己的注意力。比如今天上午是一个周日的休息日,也没有什么事情...
    谦堆雪阅读 1,033评论 0 0