2016 - 2024

感恩一路有你

c语言包含 指针变量存放的是内存地址,那为什么指针还要定义类型?

浏览量:3465 时间:2021-03-14 14:23:06 作者:admin

指针变量存放的是内存地址,那为什么指针还要定义类型?

指针定义类型用于值和指针操作。

1、指针的本质是内存地址。无论是哪种类型的指针,其本质都是内存地址。

2、定义指针类型,更方便取值。无论定义什么指针或保存什么地址,目的都不是获取地址值,而是访问地址上的数据。定义指针类型,您可以轻松地获取数据。如果指针P type是long*,那么当使用*P值时,取P值地址处的4个连续字节的数据值。如果P类型是char*,那么使用*P是地址P处的一个字节的数据。

3、定义指针类型以便于指针操作。使用指针,最常见的操作就是移动指针,即加减法。通过指针加减,可以方便地访问相邻或间接相邻的同类单元。对于相同的p1,不同指针移动的实际内存字节数不同,其值为sizeof。也就是说,对于*PP n类型,实际偏移地址值是sizeof(type)*n.

C的指针变量可存放任何类型变量的地址吗?

存储地址的变量称为指针变量。指针变量是一个特殊变量,它不同于一般变量。常规变量存储数据本身,而指针变量存储数据的地址。

假设程序中声明了int类型的变量,其值为68。系统为变量a分配的第一个地址是0x65fdf4h,PA是存储变量a地址的指针变量,即PA中存储的值是0x065fdf4h

访问变量a有两种方式:一种是直接根据0x065fdf4h的地址找到a的存储单元,从而访问变量a;另一种是另一种是根据系统为PA分配的地址找到PA,然后根据PA的值找到内存中变量a的存储单元(即变量a的地址为0x065fdf4h),从而访问变量a,前者称为直接访问,后者称为间接访问。

如果指针变量存储对象的地址,则表示指针变量指向对象。在C编程中,指针变量只有在指向时才有意义。

1. 定义指针变量的一般形式如下:

类型名称*指针变量名称1,*指针变量名称2,。。。*指针变量名n

2。Null pointer

Null pointer是一个值为0的特殊指针。在C语言中,null(在stdio中定义)。H) 用于表示空值并确保该值不是任何变量的地址。空指针赋值对于任何指针类型都是合法的。指针值为空的指针变量表示它目前没有指向任何有意义的对象。

3. void pointer

(void*)类型的指针称为通用指针,它可以指向任何变量。C语言允许将任何变量的地址作为指针直接赋给通用指针。但是,应该注意void*不能指向const修改的变量。EG const int test void*PTV PTV=&test的第三句是非法的。只有在上面的第三句中声明PTV为const void*PTV(PTV=&test)才是合法的。

当操作中需要使用常规指针指示的数据时,应该写入类型转换。例如,由一般指针PTV指示的空间的数据是整数数据,而P是整数指针。使用此表达式转换:P=(int*)PTV

c语言包含 指针变量本身有地址吗 指针变量中只能存放地址

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。