“指针的类型”和“指针所指向的类型”有什么区别

2020-11-22 13:49:16 字数 6179 阅读 2318

1楼:匿名用户

你说的对,在32机器里,指针的容量就是4字节的。指针的类型实际上就是指针所指向的变量的类型。

为什么在声明指针的时候要声明出它所指向的变量的类型呢?

因为,例如: int * p;

在以后的程序中有可能要做 int a=*p的操作,所以* ,即取值操作就要知道p所指向的空间里存放的变量的类型,根据不同的类型,*操作会读取不同长度的连续空间,例如:int 4字节;

double 8字节。

2楼:匿名用户

只有“int类型的指针”才能用来指向“int类型的值”;其他类型的指针不行。

指针是指向内存种的一块内存空间,而这块空间的大小要根据指针指向的数据的类型的长度来分配。

比如:int型需要4个字节的空间,long需要8个字节的空间。

所以在定义指针的时候要指明指针的类型,这样程序才知道应该在内存中保留多大的空间给这个指针。

指针的类型,指针所指向的类型之间有什么区别

3楼:寻秦记记

指针的类型就是指针所指向数据的类型,它俩是一个意思

指针的类型与指针所指向的类型一致吗?

4楼:匿名用户

可以不一致。。。指针的类型决定了 对指向数据的操作方式。如果将一个char*指针指向一个struct结构,那这个指针只能按char的方式访问这个struct的数据

5楼:匿名用户

对~各种类型指针需要和指针所指向类型一致才合法

指针类型与指针所指向的类型 5

6楼:匿名用户

不一定要相同。

以前的机器有near和far指针,现在的机器一般都是32位指针。也就是说计算机用一个32位地址值寻址。

所以,所有指针其本身是占用long字节大小的。

指针类型其实是告诉编译器怎么解释指针所指向对象。当一个对象有数据成员,或者可以拆分成多部分数据对象时,可以做指针的类型转换。

7楼:匿名用户

不一定。

例int a = 65; 其实就是字符a的ascii码的值char * b;

b = (char*)&a;

将b指向a的地址,这个也是可以的,只是需要强制转换一下这时你可以打印下b的内容

printf("b = [%s]",b);

可以得到 b = [a]

#include

#include

void main()

8楼:匿名用户

指针类型就是指该指针所指向的实体的类型。要相同。

其实指针本身没有类型,因为都是地址。

9楼:菜鸟升级中

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

指针的类型是告诉编译器该指针指向什么类型,如果不一致,会导致提取响应数据的时候溢出或缺失。

一个特例是void型指针,他可以指向任何变量,没有类型=所有类型,学好再用,很危险

10楼:匿名用户

void *p 可以指向任何类型

只是在转换的时候前面加上类型

int *pint = null;

void *p = pint;

cout<<(int *)p<

11楼:匿名用户

指针变量赋值、传递是没有问题的,

但是在使用*做引用操作的时候,

类型不同,效果就不同,那肯定有设计逻辑上的错误。

定义指针时指向不同类型的指针变量有什么相同和不同之处

12楼:岔路程序缘

相同之处:(1)指针的名字符合变量起名规范,如a、bw1、g_as、_jk6cx等,都可以作为指针名字,而不用管它是指向哪种类型的指针。(2)声明时,都要在指针前面加一个*。

不同之处:声明时,不同类型指针的要用不同的类型说明符。如指向整型变量的指针用int声明,指向字符或字符串的指针用char声明,指向浮点型数字的指针用float声明等等。

一些实例:

char *str;

int *p_2;

double *point1;

指针指向不同类型数据时,指针变量占用多大空间?

13楼:时方仲孙晔

变量的指针就是变量的地址。存放变量地址的变量是指针变量。即在c语言中,允许用一个变量来存放指针,这种变量称为指针变量。

因此,一个指针变量的值就是某个变量的地址或称为某变量的指针。

为了表示指针变量和它所指向的变量之间的关系,在程序中用“*”符号表示“指向”,例如,i_pointer代表指针变量,而*i_pointer是i_pointer所指向的变量。

因此,下面两个语句作用相同:

i=3;

*i_pointer=3;

第二个语句的含义是将3赋给指针变量i_pointer所指向的变量。

14楼:贝茉光盼香

在c中,

指针只有3种:

指向简单变量的,

指向结构体变量的,

指向函数的.

他们的大小和指向的类型无关,

基本都是一样的,

等于地址宽度.

在16位的地址的系统里,

用段:偏移

来表示一个地址,

当只用偏移的时候(段内)称为near指针,当段偏移都用的时候(跨段),

称为far指针,

far指针占用空间大于near指针.

但是在32位系统中,

指针大小是统一的.

在c++中,

指向简单变量,

简单结构体对象,

和简单函数的指针是和c一样的.

但是,对于有多继承的对象,

指针可能需要记录一些额外的信息,

可能会更大一些.

你可以用

sizeof(xx)来测试各种指针的大小,需要注意的是,

不同的编译器结果可能不一样.

最后的结果是:

一般而言,

指针大小是固定的,

并不因为其指向的对象类型而改变.

然而并不总是这样.

15楼:王一是个好青年

指针变量占用空间大小等于地址宽度。

指针变量的大小和指向的类型无直接关联,基本都是一样的,等于地址宽度。

同一编译器下,同一编译选项下所有类型的指针变量大小都是一样的,指针变量的大小是编译器所对应的系统环境所决定的,或者说是由编译器决定的。

指针变量是指存放地址的变量。因地址的改变而做出指定性质的衡量变法。

16楼:逢茂表正奇

c,指针3种:

指向简单变量

,指向结构体变量

,指向函数.指向

类型关,

基本都,

等于址宽度.

16位址系统,

用段:偏移

表示址,

用偏移候(段内)称

near指针,

段偏移都用

候(跨段),

称far指针,

far指针占用空间

于near指针.

32位系统,指针

统.c++,

指向简单变量,

简单结构体

象,简单函数指针c

.,于继承

象,指针

能需要记录

些额外信息,能更

些.用sizeof(xx)

测试各种指针

,需要注意,同

编译器结能.

结:般言,

指针固定,并

其指向象类型

改变.并总.

用基类指针指向派生类,typeid指针类型和指针所指向的类型分别是什么 10

17楼:匿名用户

typeid(cp).name()输出p6object;typeid(*cp).name()输出6object。

cp定义的是指向object类型,即使赋值的时候使用的是test类型指针,cp仍然是object型指针。

指针和指针变量有什么区别呢?

18楼:盖辜苟

用例子来看一下。

int a=3;

int *p;

p=&a;

现在来看一下。a=3这个式子先解释一下

等式右边是常量,左边是变量。

同理的p=&a,左边的是指针变量,右边的是指针

指针的基本概念:为了区别内存的不同位置,内存被分成字节,内存的全部字节顺序地赋予一个称为地址的编号。程序中的变量将在内存中占据一定的内存字节,在这些字节中存储的数据信息称为变量的内容。

一个变量占用连续的若干个内存字节时,最前面的一个字节的地址就作为该变量的地址。指针就是内存地址,是变量的地址,或函数的入口地址。变量的地址在程序执行时,起着非常重要的作用。

当计算机在计算含有变量的表达式时,计算机按变量的地址取出其内容,并按变量的地址将计算结果存入到变量占据的内存中。

如**:  int x=l;  x=x+2;  其中语句“x=x+2;”中的第一个x涉及到变量x占据的内存,第二个 x是引用变量 x的内容。该语句的意义是“取x的内容,完成加上2的计算,并将计算结果存入变量x占据的内存中。

”指针变量和它所指向的变量:在c语言中,地址也作为一种值,能被存储、比较、赋值,并称地址数据为指针类型,而称存储地址值的变量为指针变量,简称指针。c程序可用运算符&取变量的地址,如表达式&x的值就是变量x的地址。

程序除能按名引用变量外,也可利用变量的地址引用变量。按变量名引用变量称为直接引用,而将变量a的地址存于另一变量b中,借助于变量b引用变量a称为对a的间接引用。

定义指针变量的一般形式为:  类型 * 指针变量名;  或  类型 * 指针变量名=初值表达式;  其中,指针变量名是标识符,指针变量名之前的符号“*”,表示该变量是指针类型的。而最前面的“类型”,表示该指针变量能指向变量或函数的类型。

初值表达式是一个地址表达式,如表达式中有某变量的地址表达式,则这个变量应是前面已定义的。

在c语言中,当定义局部指针变量时,如未给它指定初值,则其值是不确定的。程序在使用它们时,应首先给它们赋值。误用其值不确定的指针变量间接引用其它变量,会引起意想不到的错误。

为明确表示指针变量不指向任何变量,在c语言中用0值表示这种情况,记为null。

如  ip= null;  也称指针值为0的指针变量为空指针。对于静态的指针变量,如在定义时未给它指定初值,系统自动给它指定初值0。

指针变量取程序对象的(开始)地址值,不能将一个整型量或任何其它非地址值赋给一个指针变量。另外,指针变量对所指向的对象也有类型限制,不能将一个不能指向的对象的地址赋给指针变量。

如有以下定义:  int i=100,j,*ip,*intpt;  float f,*fp;  以下**如注释所叙。  ip=&i;/*使ip指向i*/  intpt=ip;/*使intpt指向ip所指变量*/  fp= &f;/*使fp指向正*/  ip=null;/*使 ip不再指向任何变量*/

在计算机科学中,指针(pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为"指针"。

意思是通过它能找到以它为地址的内存单元。 在高级语言中,指针有效地取代了在低级语言,如汇编语言与机器码,直接使用通用暂存器的地方,但它可能只适用于合法地址之中。指针参考了存储器中某个地址,通过被称为反参考指针的动作,可以取出在那个地址中存储的值。

作个比喻,假设将电脑存储器当成一本书,一张内容记录了某个页码加上行号的便利贴,可以被当成是一个指向特定页面的指针;根据便利粘贴面的页码与行号,翻到那个页面,把那个页面的那一行文字读出来,就相当于是对这个指针进行反参考的动作。

指针是程序设计语言的一个重要概念。指针在c程序中有以下多方面的作用:

利用指针能间接引用它所指的对象。

利用各种类型的指针形式参数,能使函数增加描述能力。

指针与数组结合,使引用数组元素的形式更加多样、访问数组元素的手段更加灵活。

指针能用来描述数据和数据之间的关系,以便构造复杂的数据结构。当一个数据a要关联另一个数据b时,在数据a中增加一个指向数据b的指针就可实现数据a关联数据b。结合系统提供的动态分配存储设施,又能构造出各种动态数据结构。

品名和品种有什么区别,品种和类型有什么区别么

1楼 不可全戒 品名是物品的名称,品种是该物品所属种类打个比方吧,比如说毛巾,品名是毛巾,品种是日用品 2楼 蓝 人是品种 男人,女人是品名 3楼 杞秀梅干甲 前者是形容一种东西的名字,后者是形容一种东西有多少类。 品名 是某种东西的名称,比如牙刷,保温杯等。 品种 是某种东西有多少种类,比如说狗有...

饲用甜菜的品种和类型有哪些,饲用甜菜品种群有几种变异类型?

1楼 中国农业出版社 甜菜,世界广泛栽培。现在栽培的品种很多, 也很杂,根据其主要经济性状,即产量高低和质量优劣,国际上通常将甜菜品种分成三大类型。 1 丰产型品种 块根产量高,生育期长,成熟期晚,含糖分较低,但由于块根产量很高,故单位面积产糖量也高,副产品饲料价值亦大。叶片生长快,衰老亦早,新生叶...

电感和电抗的作用有什么区别,电感和电抗有什么区别

1楼 匿名用户 电容和电感在电路中对交流电引起的阻碍作用总称为电抗。 电感只能说是电抗的一部分,如果没有电容的话 电感等于电抗。 电容和电感在电路中对交流电引起的阻碍作用总称为电抗,用x表示。 感抗 xl 一般是因为电路中存在电感电路 如线圈 ,由此产生的变化的电磁场,会产生相应的阻碍电流流动的电动...