基本知识--数据结构和C语言

数据元素是数据的基本单位, 数据项是不可分割的最小单位数据项是构成数据元素的最小单位

关于数据类型我们可以在数据结构(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");

  }

    指针其实类型就是unsigned int

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

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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值