关于数据类型我们可以在数据结构(c语言版)中看到是这么定义的:

  可分两类:

  一类是 非结构的原子类型,其值是不可分解的,例如c语言中的基本类型(整型,实型、字符型和枚举类型)、指针类型和空类型。

  另一类是结构类型:是由若干成分按某种结构组成,因此是可以分解的,它的成分可以是非结构的,也可以是结构的的;

  从这里我们可以看到,我们可以看到指针属于非结构的原子类型,而且和整型(int),实型(float,double)这些基础类型不一样,可以看作是一个特殊的类型。

  指针类型和其他类型有什么不一样,这就是我们要讨论的问题;

  在不同的计算机(16位、32位、64位)里数据类型分配的空间大小是不一样的:比如 int 2或4字节 float 4字节 double 8字节

  看一下代码:

  #include <stdlib.h>

  #include <string.h>

  #include <stdio.h>

  void main()

  {

    printf(“sizeof(int):%d\n",sizeof(int));//4

    printf("sizeof(float):%d\n",sizeof(float));//4

    printf("sizeof(double):%d\n",sizeof(double));//8

    printf("sizeof(char):%d\n",sizeof(char));//1

    

    //看一级指针所占的内存空间
    printf("sizeof(int *):%d\n",sizeof(int *));//4
    printf("sizeof(double *):%d\n",sizeof(double *));//4
    printf("sizeof(float *):%d\n",sizeof(float *));//4
    printf("sizeof(char *):%d\n",sizeof(char *));//4
    //看二级指针所占内存空间
    printf("sizeof(char **):%d\n",sizeof(char **));//4

    //下面我们看看六级指针所占的内存空间大小

    printf("sizeof(char ******):%d\n",sizeof(char ******));//4

    system("pause");

  }

  于是我们发现不管是何种类型的指针,都只占四个字节的内存空间;甚至多级指针也只占四个字节的内存空间;这说明不管几级指针都只占四个字节的内存空间。

  那么这到底是为什么?因为指针是一种特殊的数据类型,它不像基本类型那样可以直接赋值到内存空间,也就是说指针的内存空间是无法存取数据的,那么它所指向的空间你到底存储的是什么?正如我们知道的,就是地址,指针就是通过操作地址来操作空间的;

  这就是为什么指针只占四个字节的原因,它只需要储存地址,或者说只能存储地址,于是它并不是说让指针指向一个一千字节的空间,那么就重新分配一千字节的内存空间,那样的话岂不是大大的拉低c语言的效率么?c语言之所以高效率就是因为可通指针不断的操作内存空间,倘若每次调用都要重新分配内存空间,并将数据读取进去,那么c语言的高效率就无法得到体现了。

转载于:https://www.cnblogs.com/huhaihao/p/7565693.html

指针也是一种数据类型相关推荐

  1. 指针铁律1:指针也是一种数据类型

    指针铁律1:指针也是一种数据类型 1) 指针也是一种变量,占有内存空间,用来保存内存地址 . 测试指针变量占有内存空间大小sizeof 2)*p操作内存 在指针声明时,*号表示所声明的变量为指针 在指 ...

  2. JS 几种数据类型及其转换

    ECMAScript 标准定义了 7 种数据类型: Number:String:Boolean:Symbol:Null:Undefined:Object .通常,数值.字符串.布尔值.undefine ...

  3. 在X32与X64下,每种数据类型占用的字节数

    在X32与X64下,每种数据类型占用的字节数分别如下: X32                             X64 指针                                  ...

  4. pandas的两种数据类型:Series和DataFrame

    首先要明确pandas是做什么的,在确定是如何做的,通过哪些方式去做的? pandas是做什么的? Python Data Analysis Library 或 pandas 是基于NumPy 的一种 ...

  5. Redis的5种数据类型与编码结构分析

    一.概述 Redis作为一个分布式缓存实现,相对于Memecache,除了支持持久化之外,一个重要的特性是Redis支持丰富的数据类型,即Memecache只支持字符串类型,所有键值对都是字符串类型, ...

  6. 9种数据类型,数据类型区别及判断数据类型方法

    基本数据类型: String,Number,null,undefined,Boolean  (通常所说的五种原始数据类型),Symbol,BigInt (ES6新增) 引用类型: object  [基 ...

  7. redis五种数据类型对应的底层数据结构

    redis五种数据类型对应的底层数据结构 redis的五种数据类型 redis核心对象redisObject type数据类型 encoding编码类型 ptr指针 redis五种数据类型对应的底层数 ...

  8. C++里有哪几种数据类型

    C++里有哪几种数据类型? 1.基本类型    布尔型   布尔型,即bool,它的取值只能是true(真)或者false(假),分别代表非零与零.对布尔型的赋值可以直接用true或者false进行赋 ...

  9. JavaScript 数据类型——八种数据类型总结

    JavaScript 目前包含八种数据类型,其中可以分成两大类. 基本数据类型(原始值): Number(数值,包含NaN) String(字符串) Boolean(布尔值) Undefined(未定 ...

最新文章

  1. 国内有没有能媲美Jira的测试管理工具?我们找国内产品来测评一下
  2. mysql负载均衡与同步_MySql数据库从同步负载均衡实时备份
  3. Redis几个认识误区
  4. XCode发布IPA离线安装包步骤
  5. 答复审稿人的10条简易法则,你都学会了吗?
  6. thinkphp5.0验证码使用
  7. postman生成python代码_python代码直接生成可执行exe文件
  8. 20.10-20.15 shell:for,while循环,break,continue,exit
  9. Ugly Windows
  10. 微积分中数学符号的由来
  11. 一款很好看的个人主页html源码
  12. 数学建模-lingo使用
  13. Shell脚本基础语法教程
  14. 计算机应用于针灸,中医针灸临床治疗专家系统的研究与实现
  15. GitHub双重认证问题
  16. 观众直呼“让她恰”,B站内容如何有效撬动ROI增长?
  17. OC_AddressBook_通讯录
  18. 业务入云是一条不归路
  19. STC15单片机 线性按键控制LED流水灯位移
  20. 【科研】BERT模型理论详解

热门文章

  1. SAP MM MIGO过账报错 - 用本币计算的余额 - 之对策
  2. Google更新机器学习开发套件ML Kit,新增支持自动回复与语言识别
  3. 人工神经网络中为什么ReLu要好过于tanh和sigmoid function?
  4. pycharm调试有哪些功能工具
  5. 困扰爱因斯坦的「幽灵般的超距作用」,是如何被贝尔定理证明确实存在的?...
  6. 美国国家创新体系的演化历程、特点及启示
  7. 里程碑式的数学证明,攻破著名Erdős猜想中关键障碍
  8. 收藏!最新大数据产业地图 十大生态金矿百大公司起底【附下载】
  9. 通过外貌就能看出程序员的资历? | 每日趣闻
  10. 一行代码卖出 570 美元, 天价代码的内幕