首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

7.1 什么是指针和指针变量

一、指针是什么 解释:由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元,因此,将地址形象化地称为“指针” 二、指针变量 解释:一个变量的地址称为该变量的“指针”,如果有一个变量专门用来存放另一个变量的地址...,则称它为“”指针变量” 注意:指针变量的值是地址 (1)定义指针变量 一般形式 类型名 *指针变量名 注意: ①指针变量前面的“*”表示该变量的类型为指针型变量...②在定义指针变量时必须指定基类型 ③指针变量中只能存放地址,不要将一个整数赋给一个指针变量 例子: ?...(2)指针变量的引用 在引用指针变量时,可能有三种情况 ①给指针变量赋值 ②引用指针变量指向的变量 ③引用指针变量的值 例子: ?...注意:要熟练掌握两个有关的运算符 ① & 取地址运算符 ② * 指针运算符 (3)指针变量作函数参数 函数的参数不仅可以是整型、浮点型 、字符型等数据,还可以是指针类型。

1K3029

关于变量、指针、别名(引用)和指针的指针

C/C++中的指针和别名这个东西确实是够恶心的。...今天蛋疼的就写一下这些东西的区别,变量永远是最简单的没有什么技术含量,那么另外一个比较简单的就是别名了,其实个人感觉这个东西完全可以看作是一个人的“小名”,只是对同一个变量多了一个称呼而已,指向的数据和地址是和原变量完全一致的...,并且用&进行取地址操作的得到的地址和原变量的地址是完全一致的(因而在对指针进行赋值的时候如果直接对指针地址操作则需要对变量或者别名使用&进行取地址运算,如果要直接赋值则需要使用*p=进行赋值)。...ivalB=20; //普通变量 int *ppiA=NULL; //指针 int *ppiB=NULL; //指针 int **ppi=NULL; //指针的指针...//指针赋值 ppi=&ppiA; //指针的指针赋值 cout变量、别名、指针和指针的指针的关系:"<

1.4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++定义指针变量 | 使用指针变量

    C++指针变量的定义 C++规定所有变量在使用前必须先定义,即指定其类型,在编译时按变量类型分配存储空间,对指针 变量必须将它定义为指针类型。...//定义整型变量 int i,j; //定义指针变量 int *point_num; 上述定义的指针变量point_num是指向整型数据的指针变量,也就是说,指针变量pointer_num只能用来指向整型数据...int就是指针变量的基类型,指针变量的基类型用来指定该指针变量可以指向的变量的类型。 ...、pointer_num2和pointer_num3,而不是 *point_num1、* point_num2和* point_num3。...即*不是指针变量名的一部分,在定义变量时在变量名前加一个*表示该变量是指针变量。 在C++中怎样使一个指针变量指向另一个变量呢?

    2.7K2420

    初识指针(指针和指针变量、如何理解地址、指针类型的意义、void*指针、野指针、空指针)(笔记)

    一、指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。...解引用 return 0; } 二、指针和指针变量 指针:地址 指针变量:变量-存放地址 指针变量用来存放地址的,指针变量并不完全等同指针..., 但口头上 指针 一般是 指针变量 2.1指针变量的大小 1.指针变量是专门用来存放地址的,指针变量的大小取决于一个地址存放需要多大空间 32位机器上:地址线32根,地址的二进制序列就是32bit...), 但是硬件和硬件之间相互独立,故用"线"连接起来(物理上的), 而CPU和内存之间也有大量的数据交互,所以两者也用线连接起来。...七、空指针 空指针是一个特殊的数据类型,它的值定义为NULL。空指针不同于NULL的整数表示,它是一个指针变量的特殊值,表示该指针变量不指向任何有效的内存地址。

    19910

    C语言新手小白详细教程(7)指针和指针变量

    1、指针的定义 指针:就是变量的内存地址。 指针变量就是存放内存地址的变量。(存放指针的变量) 从以上的定义我们可以知道,首先指针是一个值,这个值值指的是内存地址。...而指针变量,和我们之前学过的int型、char型等变量类似,不同的点在于,指针变量存储的是内存地址(指针),int型变量存储的是整型数据,char型变量存储的是字符型数据。...2、申明指针变量 我们知道,申明一个变量需要指出这个变量的数据类型,比如int i;和char i; 同样,在声明指针变量时,也要明确这个指针变量里存储的是哪类型变量的地址。...申明格式: 数据类型 * 指针变量名称; 申明存储int型变量地址的指针变量 int * i_pointer;// i_porinter 是指向 int 型变量的指针 申明存储char型变量地址的指针变量...如果我的博客能给您带来启发,如果您喜欢我的博客内容,请不吝点赞、评论和收藏,也欢迎您关注我的博客。 您的支持是我前行的动力。听说点赞会增加自己的运气,希望您每一天都能充满活力!

    21010

    8.2 指针变量

    01 怎么定义指针变量 1、一般形式 类型名 *指针变量名; 例子:int *point_1,*point_2; 左端的int是在定义指针变量时必须指定的“基类型”。...指针变量的基类型用来指定此指针变量可以指向的变量的类型。 2、指针变量前面的“*”表示该变量的类型为指针变量。...4、指向整型数据的指针类型表示为“int”,读作“指向int的指针”或简称“int指针”。 5、指针变量中只能存放地址(指针),不要将一个整数赋给一个指针变量。...02 怎样引用指针变量 1、给指针变量赋值。如:p=&a;指针变量p的值是变量a的地址,p指向a。 2、引用指针变量指向的变量。...如已执行“p=&a”,即指针变量p指向了整型变量a,则printf(“%d”,*p);其作用是以整数形式输出指针变量p所指向的变量的值,即变量a的值。 3、引用指针变量的值。

    4003229

    CCPP 指针变量 | 数组指针 | 指针数组 | 野指针 | 空指针

    普通变量和指针变量 共性 PS: 可见这4个函数的汇编指令完全一致,无论是什么类型的指针变量,对指针变量的读写跟普通变量没有任何区别,所谓的指向只是描述指针变量的值时多少而已,就读写而言,指针变量跟普通变量没有任何区别...空指针和野指针 野指针:定义了一个指针变量,如果没有进行初始化,系统就会有可能随机赋值一个地址给这个指针变量,也就是说,这个指向指向一个未知的区域。...指针变量的+-运算 指针变量的加减运算:也就是做地址偏移,不同 的指针类型偏移的步长不同。...指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。 还需要说明的一点就是,同时用来指向二维数组时,其引用和用数组名引用都是一样的。...()”的优先级比“[]”高,“*”号和p2 构成一个指针的定义,指针变量名为p2,int 修饰的是数组的内容,即数组的每个元素。

    1.7K30

    指针(3)---不同指针变量

    事实上, 各种简单类型例如整型int,字符型char等的指针变量事实上意义和用法都大同小异: 整型指针变量:用来存放整型变量的地址, int a = 100; int *p_a = &a; 字符指针变量..."; cahr *p_b = &b; 浮点指针变量:用来存放浮点型变量的地址, float c = 3,14; float *p_c = &c; 2.数组指针变量 指针数组是数组元素是指针的数组; 那么数组指针是什么呢...int *p1[10]; int (*p2)[10]; 上方的p1和p2分别代表什么呢?...注意:[]的优先级要高于*号的,所以必须加上()来保证p先和*结合。 那么, 数组指针变量也就应该是:存放的应该是数组的地址,能够指向数组的指针变量。...;//指针类型重命名 数组和函数指针类型重命名 typedef int(*parr_t)[5]; //新的类型名必须在*的右边 typedef void(*pfun_t)(int);//新的类型名必须在

    7610

    CCPP 指针变量 | 数组指针 | 指针数组 | 野指针 | 空指针

    普通变量和指针变量 共性 PS: 可见这4个函数的汇编指令完全一致,无论是什么类型的指针变量,对指针变量的读写跟普通变量没有任何区别,所谓的指向只是描述指针变量的值时多少而已,就读写而言,指针变量跟普通变量没有任何区别...空指针和野指针 野指针:定义了一个指针变量,如果没有进行初始化,系统就会有可能随机赋值一个地址给这个指针变量,也就是说,这个指向指向一个未知的区域。...指针变量的+-运算 指针变量的加减运算:也就是做地址偏移,不同 的指针类型偏移的步长不同。...还需要说明的一点就是,同时用来指向二维数组时,其引用和用数组名引用都是一样的。...号和p2 构成一个指针的定义,指针变量名为p2,int 修饰的是数组的内容,即数组的每个元素。

    1.7K20

    C语言中只读指针变量与只读变量指针

    只读指针变量和只读变量指针看着好像有点绕; 只读指针变量:意思是只读指针的变量 只读变量指针:只读变量的指针 本文的主角是const关键字 如果我们开发的时候,定义了某个变量,不想让别人修改时,就可以使用...首先定义两个整型变量 int a = 10; int b = 20; 普通的指针变量 先来看一下普通的指针变量: 我们定义一个普通的int类型的变量a,并初始化为10; 定义一个int类型的指针变量...那么打印出来p的值,就是a的值,10; //普通的指针变量 int *p = &a; printf("%d \n",*p);//10 //指向数值222 *p...也可以修改指针变量的地址; 只读指针变量 //只读指针变量 //这是一个const指针指向的int类型的变量 //const指针指向的整型变量 int *const cp1 = &a; *cp1...= 2;//值可以修改 *cp1 = &b; //cp1 = &b; //指针不能修改 值可以修改; 地址不能修改; 只读变量指针 //一个const指针指向的一个const整型的变量

    2.5K20

    C语言中“指针”和“指针变量”的区别是什么

    比较严格的说法是这样的: 系统为每一个内存单元分配一个地址值,C/C++把这个地址值称为“指针”。如有int i=5;,存放变量i的内存单元的编号(地址)&i被称为指针。...“指针变量”则是存放前述“地址值”的变量,也可以表述为,“指针变量”是存放变量所占内存空间“首地址”的变量(因为一个变量通常要占用连续的多个字节空间)。...比如在int i=5;后有一句int *p=&i;,就把i的指针&i赋给了int *型指针变量p,也就是说p中存入着&i。所以说指针变量是存放指针的变量。...有一个事实值得注意,那就是有不少资料和教科书并没有如上区分,而是认为“指针是指针变量的简称”,如对int *p=&i;的解释是:声明一个int *型指针p,并用变量i的地址初始化;而严格说应该是声明一个...int *型指针变量p才对。

    61730

    指针变量的传值和传址

    原因:在func函数调用过程中,形参和实参的传递使用了值传递方式,这种情况下,形参变量在函数体内发生了变化,在函数结束之后,形参变量随之释放,不能把变化的结果返回给实参。...复制完毕后实参的地址和形参的地址没有任何联系,对实参形参地址的修改不会影响到实参, 但是对形参地址所指向对象的修改却直接反应在实参中,因为形参指向的对象就是形参的对象。...无论传值还是传指针,函数都会生成一个临时变量,但传引用时,不会生成临时变量, 传值时,只可以引用值而不可以改变值,但传值引用时,可以改变值, 传指针时,只可以改变指针所指的内容,不可以改变指针本身,但传指针引用时...,既可以改变指针所指的内容,又可以改变指针本身, 引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本...因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。 参考书籍《C陷阱与缺陷》

    2K30

    指针变量的传值和传址

    原因:在func函数调用过程中,形参和实参的传递使用了值传递方式,这种情况下,形参变量在函数体内发生了变化,在函数结束之后,形参变量随之释放,不能把变化的结果返回给实参。...复制完毕后实参的地址和形参的地址没有任何联系,对实参形参地址的修改不会影响到实参, 但是对形参地址所指向对象的修改却直接反应在实参中,因为形参指向的对象就是形参的对象。...无论传值还是传指针,函数都会生成一个临时变量,但传引用时,不会生成临时变量, 传值时,只可以引用值而不可以改变值,但传值引用时,可以改变值, 传指针时,只可以改变指针所指的内容,不可以改变指针本身,但传指针引用时...,既可以改变指针所指的内容,又可以改变指针本身, 引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本...因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。 参考书籍《C陷阱与缺陷》

    2.8K40

    C:指针学习-指针变量—学习笔记

    前言: 本篇文章涉及字符指针变量,数组指针变量,函数指针变量,以及函数指针数组。...10]结合变成了数组,我们希望得到的是一个指针变量parr,而当parr和[10]结合后就变为了数组名,得不到想要的结果。...其实很简单,我们只需要使用圆括号()将 * 和 parr括起来就可以了 从上面的图中我们可以看到圆括号的优先级是最高的,所以当我们想得到一个指针,就需要* 和 parr先结合,而不是parr和[10]先结合...| | | pf指向函数的参数类型和个数的交代 | 函数指针变量名 pf指向函数的返回类型 3.3 关于指针的连续定义 如果是连续定义两个整数,我们可以这么写...然后 (*pf)(2, 3) 就是调用这个函数指针所指向的函数,并向其传递参数 2 和 3。 最后,将函数的返回值赋给变量 ret 。 3.5 补充函数调用 还记得我们正常函数调用是怎么操作的吗?

    7810

    常量指针和指针常量的详解一样吗_指针是常量还是变量

    说一下 常量指针和指针常量 的区别。 常量指针   指向常量的指针,也就是说指针指向的对象是常量,指向的常量不能修改。指针不是一个常量, 可以把指针指向别一个常量。...不可以对指向的内容做修改: *p = 3; // 错误,常量指针不变的常量,如果指针指向了某个地址,在解引用后不能去修改指针变量的值 指针常量   指针指向的地址不可以改变,地址的内容可以通过指针改变...指针常量在定义时必须赋值。...不能对指向的地址进行修改: p = &b; // 错误,指针指向的地址不可以改变,地址的内容可以通过指针改变 我们也可以这样记 const 在谁前边谁就不可以修改: 常量指针 : const 在指针前边...指针常量 : const 在变量前边,我们就不可以修改指针的地址。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

    62620

    8.2 C语言指针变量

    01怎么定义指针变量 1、一般形式 类型名 *指针变量名; 例子:int *point_1,*point_2; 左端的int是在定义指针变量时必须指定的“基类型”。...指针变量的基类型用来指定此指针变量可以指向的变量的类型。 2、指针变量前面的“*”表示该变量的类型为指针变量。...4、指向整型数据的指针类型表示为“int”,读作“指向int的指针”或简称“int指针”。 5、指针变量中只能存放地址(指针),不要将一个整数赋给一个指针变量。...02怎样引用指针变量 1、给指针变量赋值。如:p=&a;指针变量p的值是变量a的地址,p指向a。 2、引用指针变量指向的变量。...如已执行“p=&a”,即指针变量p指向了整型变量a,则printf(“%d”,*p);其作用是以整数形式输出指针变量p所指向的变量的值,即变量a的值。 3、引用指针变量的值。

    1.3K2625

    golang 利用指针导出变量

    golang 利用指针导出变量 1 golang中的指针类型:unsafe.Pointer & uintptr unsafe.Pointer 类似 C 的 void *,在golang中是用于各种指针相互转换的桥梁...uintptr 是golang的内置类型,能存储指针的整型,uintptr 的底层类型是 int,和 unsafe.Pointer 可相互转换。...unsafe.Pointer 用于转换不同类型指针,不可以参与指针运算 uintptr 用于指针运算,GC会自动回收 uintptr 类型的目标 Go语言是强类型语言,指针也是具有明确类型的对象,进行严格类型检查...unsafe.Pointer 突破私有成员 package main import ( "fmt" "text/template" "unsafe" ) // MyTemplate 定义和...在b和i中间有3个填充,size=13+3=16 通过unsafe取值 package main import ( "fmt" "unsafe" ) func main() {

    81970
    领券