c语言包含 指针变量存放的是内存地址,那为什么指针还要定义类型?
指针变量存放的是内存地址,那为什么指针还要定义类型?
指针定义类型用于值和指针操作。
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
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。