当前位置:首页 » 文件传输 » 指针间接访问讲解
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

指针间接访问讲解

发布时间: 2023-06-01 08:56:06

c语言 程序编程 指针

指针也是一个变量,它也需要进行赋值。指针所存储的东西不是什么特别的,犹如普通的整型变量int x ,x可以存放一个整数一样, 那int *p 的p则可以存放一个内存地址。所以指针变量中所存放的内容就是一个内存地址。
所以经常的做法是将一个“地址”赋值给一个指针变量,那如何取到一个地址呢,C语言中就提供了一个运算符&, 称该运算符为取地址运算符,它可以获得一个变量的地址,如int x; 那么&x就是变量x所在内存单元的地址了。这样你可以把它赋给一个指针变量即 p = &x; 我们形象的说p指向x,其实就是p的内存单元中存放了变量x的地址。
通过上述的赋值给对于x这个内存单元我就可以有两种访问方法,也就是说我有两种方式使用x
第一种直接法,就是x, 比如我要更改x变量的值,就是更改x所在内存单元中存放的数据,
x=5,就是把5存放到悉喊x所在内存单元。这是很显然的方式。
第二种间接法,由于之前已经让一个指针变量p指向的x即p= &x了,所以我可以通过p间接的访问x,怎么访问呢? 这里C语言又提供了一个运算符*, 你肯定不陌生,它就是乘号啊, 没错它是乘号,但这里它有另一个作用就是“间接访问”芹塌,通过*运算符我们可以间接访问x这个内存单元。
你可能已经清楚点了就是*p 就是说*p的值就是x, x的值就是*p, 所以这里容易产生一种概念
*p==x 有这个表达式存在且为真。 没错它确实为真。
但是错误就容易从这里产生了,因为*p==x,容易产生这种想法,那么我把x赋值给*p, 即*p=x会有错吗? 理解方式就是*p即然代表了一个值,它在此处就是x, 那我要改变*p的值, 用*p=x 这没有问题吧? 肯定有, 这里*的作用一定搞清是“间接访问”, 间接访问的话首先它就得有一个指向的对象,也就是说必须有p=&x的前提,有可能有*p=x, 无此前提的话真接使用*p就是空谈,因为指针变量p是存在,但是p中存放的内容是什么并不确定,它并没有存x的地址啊,程序也不会那么聪明的你这里睁首野定义了x它就指向x去。所以这种想法是错的
分清*这个运算符三个作用:
1 乘号, 比如a*b表示a乘以b,是数学运算
2 指针定义标志, 比如我要定义一个指针变量有int* p; 这是定义时标志它是一个指针变量
3 间接访问, 用于指针间接访问它所指向的内存单元 如int *p,x; p=&x; 则可*p=5;这样使用

② 有没有c语言大神解释一下指针的间接访问和直接访问还有指针是不是既是一个地址,又是一个变量

间接访问是通过指针变量存放的地址访问的,直接访问就不用借助指针变量,指针可以认为是地址,但不是变量,指针变量才是变量伍银山,只是国内腔中书都把那两个混在搏老一起

③ 什么是c语言里面的间接访问

间接访问是相对于直接访问而言的,比如
int a = 1 ;
a = a + 1 ; //这就是直接访问a,汪消因为用的是变量a本困缓知身

int b = 2 ;
int* p = &b ;
*p = 3 ; // 这就是间哪念接访问,用指针p访问b。

④ C语言:指针变量的使用之间接访问

#include<stdio.h>

voidmain(){行烂
constintN=10;
doublex;
doublescore[N]={0};
double*px=&x;
*px=36.59;
【代码1】//使用间接访问方式将10赋给x

*px:px是指针,那么*px就是解除了的普枣郑通变量档岩漏,与x完全等价
&px:是取px得存储地址。
px:就是指针啦。
return0;
}