指针也是一种数据类型
关于数据类型我们可以在数据结构(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) 指针也是一种变量,占有内存空间,用来保存内存地址 . 测试指针变量占有内存空间大小sizeof 2)*p操作内存 在指针声明时,*号表示所声明的变量为指针 在指 ...
- JS 几种数据类型及其转换
ECMAScript 标准定义了 7 种数据类型: Number:String:Boolean:Symbol:Null:Undefined:Object .通常,数值.字符串.布尔值.undefine ...
- 在X32与X64下,每种数据类型占用的字节数
在X32与X64下,每种数据类型占用的字节数分别如下: X32 X64 指针 ...
- pandas的两种数据类型:Series和DataFrame
首先要明确pandas是做什么的,在确定是如何做的,通过哪些方式去做的? pandas是做什么的? Python Data Analysis Library 或 pandas 是基于NumPy 的一种 ...
- Redis的5种数据类型与编码结构分析
一.概述 Redis作为一个分布式缓存实现,相对于Memecache,除了支持持久化之外,一个重要的特性是Redis支持丰富的数据类型,即Memecache只支持字符串类型,所有键值对都是字符串类型, ...
- 9种数据类型,数据类型区别及判断数据类型方法
基本数据类型: String,Number,null,undefined,Boolean (通常所说的五种原始数据类型),Symbol,BigInt (ES6新增) 引用类型: object [基 ...
- redis五种数据类型对应的底层数据结构
redis五种数据类型对应的底层数据结构 redis的五种数据类型 redis核心对象redisObject type数据类型 encoding编码类型 ptr指针 redis五种数据类型对应的底层数 ...
- C++里有哪几种数据类型
C++里有哪几种数据类型? 1.基本类型 布尔型 布尔型,即bool,它的取值只能是true(真)或者false(假),分别代表非零与零.对布尔型的赋值可以直接用true或者false进行赋 ...
- JavaScript 数据类型——八种数据类型总结
JavaScript 目前包含八种数据类型,其中可以分成两大类. 基本数据类型(原始值): Number(数值,包含NaN) String(字符串) Boolean(布尔值) Undefined(未定 ...
最新文章
- 国内有没有能媲美Jira的测试管理工具?我们找国内产品来测评一下
- mysql负载均衡与同步_MySql数据库从同步负载均衡实时备份
- Redis几个认识误区
- XCode发布IPA离线安装包步骤
- 答复审稿人的10条简易法则,你都学会了吗?
- thinkphp5.0验证码使用
- postman生成python代码_python代码直接生成可执行exe文件
- 20.10-20.15 shell:for,while循环,break,continue,exit
- Ugly Windows
- 微积分中数学符号的由来
- 一款很好看的个人主页html源码
- 数学建模-lingo使用
- Shell脚本基础语法教程
- 计算机应用于针灸,中医针灸临床治疗专家系统的研究与实现
- GitHub双重认证问题
- 观众直呼“让她恰”,B站内容如何有效撬动ROI增长?
- OC_AddressBook_通讯录
- 业务入云是一条不归路
- STC15单片机 线性按键控制LED流水灯位移
- 【科研】BERT模型理论详解
热门文章
- SAP MM MIGO过账报错 - 用本币计算的余额 - 之对策
- Google更新机器学习开发套件ML Kit,新增支持自动回复与语言识别
- 人工神经网络中为什么ReLu要好过于tanh和sigmoid function?
- pycharm调试有哪些功能工具
- 困扰爱因斯坦的「幽灵般的超距作用」,是如何被贝尔定理证明确实存在的?...
- 美国国家创新体系的演化历程、特点及启示
- 里程碑式的数学证明,攻破著名Erdős猜想中关键障碍
- 收藏!最新大数据产业地图 十大生态金矿百大公司起底【附下载】
- 通过外貌就能看出程序员的资历? | 每日趣闻
- 一行代码卖出 570 美元, 天价代码的内幕