初识指针

  首先需要了解一个概念,计算机的内存(或者说是寄存器)都是有地址的。

  《c++ primer plus》一书P37中提到这样一个概念:为把信息存储在计算机中,程序必须记录3个基本属性:

1、信息将要存储在哪里

2、要存储什么值

3、存储何种类型的信息  

而正是为了满足第一个属性,开发语言的设计者设计或者说定义了指针:用于描述信息(各种类型的数据如int、float、double等)在内存中的地址(位置)。就好比酒店在设计之初也需要制定各个房间的编号是什么,这样更方便安排客户入住。如下图:

指针与数组

  《c++ primer plus》一书提到,指针默认是指向数组第一个元素地址的。为什么要让指针默认指向第一个元素的地址呢?

  当我们这样定义一个数组时:int *p_int  = new int [5];  

  站在语言设计者的角度考虑,让指针指向第一个元素的地址是比较合理的(是不是也可以让指针默认指向(代表)最后一个元素呢???因为从内存分配角度考虑,要么从高位——>低位 又或者是从 低——>高)。要么从前往后找,要么从后往前走;如果让指针默认指向中间(若是数组元素个数大于2的话),这样不管先找那一边效率都不高。所以也就默认指向第一个元素了。

(0)c++入门——认识指针与数组——指针即是内存中地址。的更多相关文章

  1. C++中的指针、数组指针与指针数组、函数指针与指针函数

    C++中的指针.数组指针与指针数组.函数指针与指针函数 本文从刚開始学习的人的角度,深入浅出地具体解释什么是指针.怎样使用指针.怎样定义指针.怎样定义数组指针和函数指针.并给出相应的实例演示.接着,差 ...

  2. (60) 结构体指针、结构体变量嵌套、结构体指针嵌套、函数指针、数组指针、指针数组、typedef 综合运用

    #include<stdio.h> #include<iostream> #include<malloc.h> /* author : 吴永聪 program: 结 ...

  3. C与指针(结构体指针,函数指针,数组指针,指针数组)定义与使用

    类型 普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针 定义方式 int *p; int *p[5]; int (*p)[5]; int a[3][5]; struct{.. ...

  4. c语言,指针与数组--指针与二维数组2

    指向一维数组的指针   char (*p)[10] ;指向一维数组的指针类型 typedef  char(*TYPE_P2ARRAY)[10]  ;   该指针可以指向数组 ,且使用起来效果节本相同, ...

  5. C专家编程之为什么C语言把数组形參当做指针:数组/指针实參

    #include<stdio.h> void print_array_test(char ca[]) { printf("ca : %s\n",ca); printf( ...

  6. void指针和数组指针之间的转换

    由于void* 可以被任何指针赋值,所以以void*作为函数参数可以使得接口更容易接受不同类型的参数,不过需要注意的时,实际操作时还需要利用强制类型转换,将指针转换为原类型,否则在内存上会有问题. 一 ...

  7. windows下查看C语言字符数组(俗称:字符串)在内存中地址信息的操作过程

      #include <stdio.h> #pragma warning(disable:4996) int power10(int n) { ) { ; } ; ; i < n; ...

  8. 指针数组 vs 数组指针

        指针数组,故名思义,就是指针的数组,数组的元素是指针:     数组指针,同样,就是直想数组的指针.     简单举例说明:     int *p[2]; 首先声明了一个数组,数组的元素是in ...

  9. C语言指针与数组的定义与声明易错分析

    部分摘自<C语言深度解剖> 1.定义为数组,声明为指针 在文件1中定义: char a[100]; 在文件2中声明: extern char *a; //这样是错误的 这里的extern告 ...

随机推荐

  1. UOJ社区版安装多个Judger

    目录 声明 在同一台机器上安装 在不同机子上安装 声明 本文档非官方文档,为我试坑的经验总结. 本文编写时间 2019.11.04 ,并不一定会随UOJ更新而更新. 由于UOJ需要用SVN传题,并不那 ...

  2. LVS集群之IP TUN模式以及网站压力测试

    今天来看一下LVS的第三种模式IP TUN. TUN方式,是通过给数据包加上新的IP头部来实现,这个可以跨整个广域网. 环境: 主机名 IP 系统 角色 tiandong63 RIP:192.168. ...

  3. Java写入的常用技巧(二)

    在一般从流接收数据写入介质的场景中,大部分存在每批次数据较小,导致小文件较多的问题. 一般考虑设置一个缓冲池,将多个批次的数据先缓冲进去,达到一定大小,再一次性批量写入 //公共缓冲池和缓冲池大小,如 ...

  4. Leetcode题目104.二叉树的最大深度(DFS+BFS简单)

    题目描述: 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null, ...

  5. Python关于File学习过程

    一.首先,认识下文件 文本文件和二进制文件的差异和区别 进行个总结: 计算机内的文件广义上来说,只有二进制文件 狭义上来讲分为两大类:二进制文件和文本文件. 先说数据的产生(即写操作) 文本文件的所有 ...

  6. ADB命令指令控制Android系统的WIFI连接开启/关闭状态

    Android系统的usb调试已开启,连接电脑(有ADB环境) 1.在cmd中,进入shell指令模式 adb shell 2.进入ROOT指令模式 su 3. 打开WIFI指令 svc wifi e ...

  7. ESXi 5.1 识别GPT问题

    使用paredUtil命令 partedUtil mklabel /dev/disks/eui.227c000155707e0b msdospartedUtil mklabel /dev/disks/ ...

  8. DataFactory连接MySQL数据库

    1.下载驱动 https://dev.mysql.com/downloads/connector/odbc/ 需要使用oracle登录账号密码后才能下载 下载完成后进行安装,一路下一步即可 2.连接m ...

  9. 怎么彻底关闭卸载删除Cortana小娜进程,最简单

    原文地址:https://jingyan.baidu.com/article/90bc8fc8be67bcf653640cfa.html Win10中的Cortana是微软开发的一款个人AI助理,集聊 ...

  10. 解决ssh连接超时(ssh timeout)的方法

    echo export TMOUT=1000000 >> /root/.bash_profile (可设置为-1为永不超时) cat /root/.bash_profile source ...