我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:2019跑狗图高清彩图 > 指针 >

有关指针类型的定义问题

归档日期:07-16       文本归类:指针      文章编辑:爱尚语录

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部这是肯定的,要知道指针变量存在着加减运算,指针就是地址,那么指针变量里面存放的就是指针(也就是地址)。请看:

  那么此时pi和pc里面其实都存放的是计算机内存地址,其实在32为的计算机中就是4个字节的数字,这4个字节的数字就表示了一个内存单元的具体地址。那么

  如果我要访问a[0]可以这样*pi其实就是对a[0]的访问,如果要访问a[1]可以这样: *(pi+1) 。

  同样对于字符数组b来说通过*pc可以访问到b[0]的值,通过*(pc+1)可以访问到b[1]的值,那么你有没有想过,整型数据占用的内存空间与字符数据是不一样的呢。整型数据占用的字节数字是与机器的字长有关的,例如在32为的机器上整型数据占用4个字节,也就是32为,在以前的dos机器上(也就是16位机器)整型数据占用2个字节,例如在turbo C下面编译int占用2个自己,char占用1个字节,在VC++ 6.0上编译int占用4个字节,char占用1个字节,这里我们以VC++ 6.0作为例子

  pi+1之后就指向了数组的第二个元素,同样pc+1之后也只想了b数组的第二个元素,虽然他们都是指向了数组的第二个元素,但是他们移动的字节数是不一样的。

  例如在b数组中,b[0]和b[1]他们是紧挨着的两个字节,而在a数组中a[0]和a[1]他们每个都占4个字节,所以&a[0]和&a[1]是相差4个字节的。

  所以pi++和pc++他们移动的实际字节数不一样,这在谭浩强的书中都有详细的讲到。

  那么一个指针有两部分组成,首先其是一个指针类型,其次其指向的是什么类型的数据,其指向的数据类型是区分不同指针的一个重要特征。

  int * p; 与 char * p1; 中p和p1是不同的指针,他们一个事指向字符,一个是指向整形数据的。 当我们以*p和*p1来访问他们指向的内存单元时,编译器对他们的解释是不一样的,一个是将其指向的内存单元当做是字符来解释,一个是将其指向的内存单元当做整型数据来解释的。并且在从内存中获得数据的时候也会根据指针指向的数据类型来决定取出指针指向的地址后面的连续多少个字节的数据,其实这些数据在内存中都是以二进制的01来表示的,如果我们单独来看这些数据他们就是一样的,不代表任何特殊的含义,他们都是二进制数据而已,但是编译器在解释这些数据的时候就会进行不同的转换。

  这里p实际上是一个指向函数的指针变量,其指向的函数具有两个int类型的参数,并且函数返回一个int类型的数据。

  其实此时p变量中也是存在的是一个地址的,此地址就是该函数的入口地址。如果p是一个int *类型的变量,那么这样进行函数调用就不行了。

  另外我们说指针变量里面存放的就是指针,也就是一个地址,说白了地址就是一个数字用来标示内存的,也就是用来给内存编号的。我们可以进行强制转换:

  展开全部首先指针的定义是通过指针找到内存单元的一个地址并从地址内找到相应的数据

本文链接:http://masterblue.net/zhizhen/377.html