指针是一个变量?还是一种数据类型?

解决方案 »

  1.   

    指针的类型(定义)是一个 unsigned int 长度当然视操作系统而定,决定可寻址的长度Dos/Win3.x/95 16位操作系统 = 16位指针
    Win98/2000/xp 32位操作系统 = 32位指针
    Longhorn      64位操作系统 = 64位指针   //注:一个指针占8个字节,太浪费硬盘空间了,如果指针越多的话当然,这个指针只是记录着内存的地址,而用用"类型声明"的指针只是说明指向该内存地址的数据类型是什么而已(当然,如果对该地址的数据类型很了解的话,可以轻松的使用强制类型转换)
      

  2.   

    指针本身也是一个变量。
    char *p, *q;
    strcpy(q, p);
    对于以上程序代码,p和q虽然是指向字符串首地址的指针,
    但它们本身也是变量,
    上面的代码的实质是p和q本身作为形参,
    传递到strcpy里面,产生了实参,
    所以,该函数不能改变p和q所指的位置(即p和q的值)。
    但是因为p和q的值是指向某内存的,
    所以strcpy可以访问内存中的字符串。
      

  3.   

    也就是说
    char *p;
    int *q;
    float *r;
    以上三个都是指针,它们本身没有类型区别。
    至所以要区分他们指向的类型,是char/int/float。
    是为了在程序的编写中提供方便,
    如strcpy(q,r);//错误,q和r不是指向字符的指针
      

  4.   

    指针还是应该看作一个变量,虽然它在windows编程环境中是一个占4个字节的长整型,但是它记录的却是一个地址,且这个地址是可以被修改的,所以它还是应该看作是变量
      

  5.   

    “房间号”这个词是什么?是一种事物类别,还是一个代号?
    这个“房间号”的房号范围是多少,是“unsigned int 长度当然视操作系统而定,决定可寻址的长度”。
      

  6.   

    目前,一般的指针是一种带有类型信息的地址容器,是个变量。它所存储的数值,就是它所指向对象在内存中的地址。之所以还带有类型信息,是因为不同类型指针所指向的内存区域有不同的存储结构,按照所指定的类型信息,才能够正确地访问该区域。指针的产生就是为了高效地操作对象以及管理对象的存储位置。它本身就存储内容上来说,和int等基本类型没有差别,就仅仅是个数值而已。