当前位置:首页 » 服务存储 » 通过指针引用一个存储单元
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

通过指针引用一个存储单元

发布时间: 2022-08-02 23:13:15

‘壹’ 如何使用指针来存取数据

哈哈,不知道楼主看没看过海贼王?
路飞一伙进入伟大航路后,要按照“指针”来从一个岛屿到下一个岛屿
其实C语言中的“指针”的意思也是这样,所谓“指针”,不如说是“指南针”,再高端点,应该叫“GPS”,指针变量存的就是“GPS坐标”这个信息,这个“GPS坐标”,就是内存中的某个位置, 指针变量存的这个地址,我们知道也没用,我们利用指针,是希望能通过指针,来找到内存中的这个地址,然后去看这个地址中存储的数据(值,或者类比来说指针指向岛屿,岛屿上的树呀,花呀,就是这个岛屿的内容。对于计算机来说,岛屿就是内存中的一块地方,那么些花草就是 整形、字符之类的数据)
说到这,LZ应该明白,指针并不是容器,而是一个“定位器”,我们用指针,就是希望能够随时找到这个内存位置上的值
所谓的文件指针,也是这个意思,我们用fopen这个函数,把一个文件以流的形式寄存在了内存当中,但仅仅是这样而已,你什么都做不了~于是,指针出现了,文件指针帮助你找到这个文件流在那内存中的具体位置,好让你来对其进行操作~
这是ptb_youd 同学的解答,我认为说得很好。

‘贰’ 论述C语言中指针的概念和作用,并举例说明

1、指针概念:变量的地址(计算机内存字节的编号)叫做指针,存放变量地址的变量叫指针变
量,
简言之,指针是用来存放地址的。
2、作用:指向这个变量或数组的首地址,是变量的间接引用方式。其值如果改变,变量的值或数组元素的值也会跟着改变。程序对变量的操作实际上是对变量所在的存储空间读取和写入数据。方便对变量的操作。
举例说明:
int
a=3;/*定义一个整型变量a,并赋初值3*/
int
*p;/*定义一个指针变量P*/
p=&a;/*让p指向a的首地址,也就是a的地址*/
程序为a分配一个2个字节的存储单元,假如2个字节的地址分别为(ABCD1和ABCD2,唯一),那么p里面放的值就是ABCD1,不是3。这时可通过p直接引用a,实际上*p=3。以后不管a存放在内存中的哪个地方,只用通过调用p就可以引用a。这时如果令*p=4,则最后的a值也为4。对于数组,指针是指向数组的首地址。

‘叁’ 若p已指向存储单元a[1],通过指针

s=p+3; 2

‘肆’ 引用和指针有何区别何时只能使用指针而不能使用引用

引用与指针区别:引用只是取得数据,无权修改,句柄就是一种引用的方式;指针是直接指向内存的,可以修改数据的。

引用访问一个变量是直接访问,而指针是间接访问。
引用是一个变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间。
引用在开始的时候就绑定到了一个内存空间(开始必须赋初值),所以他只能是这个内存空间的名字,而不能改成其他的,当然可以改变这个内存空间的值.
例如
int i = 3,j = 4;
int &x = i;//成为i的别名
x = j;//不能否认x仍然引用i,并没有成为j的别名,只是修改了x和j共享的内存空间的值.
这点与指针不同,指针在任何时刻都可以改变自己的指向。

无法让引用与其指示物分离。
和指针不同,一旦引用和对象绑定,它无法再被重新指向其他对象。引用本身不是一个对象(它没有标识;当试图获得引用的地址时,你将的到它的指示物的地址;记住:引用就是它的指示物 )。
从某种意义上来说,引用类似 int* const p 这样的const指针(并非如 const int* p这样的指向常量的指针)。不管有多么类似,请不要混淆引用和指针;它们完全不同。
尽可能使用引用,不得已时使用指针。
当不需要“重新指向(reseating)”时,引用一般优先于指针被选用。这通常意味着引用用于类的公有接口时更有用。引用出现的典型场合是对象的表面,而指针用于对象内部。
上述的例外情况是函数的参数或返回值需要一个“临界”的引用时。这时通常最好返回/获取一个指针,并使用 NULL指针来完成这个特殊的使命。(引用应该总是对象的别名,而不是被解除引用的 NULL 指针)。
注意:由于在调用者的代码处,无法提供清晰的的引用语义,所以传统的 C 程序员有时并不喜欢引用。然而,当有了一些 C++经验后,你会很快认识到这是信息隐藏的一种形式,它是有益的而不是有害的。就如同,程序员应该针对要解决的问题写代码,而不是机器本身。

‘伍’ 使指针p指向一个float型的动态存储单元

选B
B的格式是最正确的 p=(float*)malloc(sizeof(float))
因为是存储地址所以必须要用指针来保存(float*)。
malloc(sizeof(float)) 表明这块地址的大小。类型当然是对应指针的。

‘陆’ 指针和引用的优缺点有哪些

指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。
二者的相同点:
1. 都是地址的概念;指针指向一块内存,它的内容是所指内存的地址;
2.引用是某块内存的别名。
二者的不同点:
1. 指针是一个实体,而引用仅是个别名;
2. 引用使用时无需解引用(*),指针需要解引用;
3. 引用只能在定义时被初始化一次,之后不可变;指针可变;
4. 引用没有 const,指针有 const;
5. 引用不能为空,指针可以为空;
6. “sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;
7. 指针和引用的自增(++)运算意义不一样;
8.从内存分配上看:程序为指针变量分配内存区域,而引用不需要分配内存区域。

‘柒’ 多个指针可以指向同一个存储单元

B
指针相等,就是指指针里保存的地址相同,
就是说两个指针指向同一个地址.
指针变量,就是一个变量里放着别人的地址.

‘捌’ 关于C语言指针的几个问题

1、回答正确!答案是B
2、首先注意指针变量传递的是地址!sub函数里,y、z均指向a,所以共同改变a的值。*y=*y-1.0; 执行后,a=*pa=*y=*z=1.5。*z=*z+x;执行后,*z=*pa=a=1.5+6.5=8,所以答案是C. 8.000000
二-1、错误!因为s已经指向了a[2]的地址,而a[2]的下一个地址就是a[3],所以s+1就指向了a[3]的地址,*(s+1)取a[3]的值。
二、-2、p并不指向空!首先,数组a共有五个元素,而此时指针p指向首地址,for循环一共循环了5次,所以输出结果是10 20 30 40 50。因为指针用的是*(p+i),所以运行完成后,p并没有移动(注意不是*(p++)),依然指向数组a的首地址。
关于指针,建议你看一下“初学者编程入门:C语言指针使用方法”,非常容易理解!而且有很多技巧在里面。
地址:http://www.souzz.net/html/e/C1/3878.html
或者从网络里搜一下。