初识指针

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

  《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. vueApp打包

    本地打包测试 http-server是一个基于node.js的简单的,零配置的命令行http服务器.安装:npm install http-server -g使用:http-server [path] ...

  2. 微信sdk php签名方法整理

    <?php class JSSDK { private $appId; private $appSecret; public function __construct($appId, $appS ...

  3. 面试题_Spring基础篇

    Spring基础题 1. 什 么 是 Spring? Spring 是 个 java 企 业 级 应 用 的 开 源 开 发 框 架 .Spring 主 要 用 来 开 发 Java 应 用 , 但 ...

  4. NUnit -- Test discovery or execution might not work for this project

    [7/31/2019 2:06:58.100 PM Warning] No test matches the given testcase filter `FullyQualifiedName=Sil ...

  5. ansible的剧本

    ansible的playbook的介绍-yaml ansible的playbook是使用yaml语言写的 YAML标记语言介绍YAML是一个可读性高的用来表达资料序列的格式.YAML参考了其他多种语言 ...

  6. 使用pyinstaller 打包python程序

    1.打开PyCharm的Terminal,使用命令pip install pyinstaller安装pyinstaller 2.打包命令:pyinstaller --console --onefile ...

  7. LC 670. Maximum Swap

    Given a non-negative integer, you could swap two digits at most once to get the maximum valued numbe ...

  8. jQuery常用操作部分总结

    注意:$(“.xxx”)   类,一定要在前面加上点callback为完成后执行的函数名称隐藏显示:hide()   show()淡入淡出:fadeIn()  fadeOut()  fadetoggl ...

  9. Linux命令jobs小记

    命令使用过程中,输出中总是会带两个符号:+ 和 -,如: [1] 7893 Running gpass & [2] 7904 Running gnome-calculator & [3 ...

  10. Python中webbrowser的用法

    #coding:utf-8 import time import webbrowser as web import os import random #随机选择一个浏览器打开网页 def open_u ...