Ⅰ c语言如果用指针去使用变量,和直接使用变量有什么不同。
指针是C语言中的一个重要概念,也是C语言的一个重要特色。正确而灵活的运用它,可以有效地表示复杂的数据结构;能动态分配内存;方便地使用字符串;有效而方便地使用数组;在调用函数时能获得一个以上的结果;能直接处理内存单元地址等……——《C程序设计(第三版)》
你在举例的时候说的直接引用数据的时候是几乎没有区别的,数组其实也相当于一种指针的应用,只不过是规定好了的。但比如用在排序上,同样是排序(从大到小)数据1和2,不用指针:
#include
void main()
{
int a,b;
scanf("%d %d",&a,&b);
if(a<b)
{
a=a+b;
b=a-b;
a=a-b;
}
}
原来输入的时候是a=1,b=2,程序运行完是a=2,b=1;
而如果运用指针:
#include
void main()
{
int *p1,*p2,*p,a,b;
scanf("%d %d",&a,&b);
p1=&a;
p2=&b;
if(a<b)
{
p1=&b;
p2=&a;
}
}
排序完成后,p1指向较大的数2,p2指向较小的数1,而a仍然等于1,b=2,它们的值是不变的。如果在另外的程序中同样调用了这两个变量,用指针就不会对其产生影响,这就是指针作用的一个方面。指针还有很多其它方面的作用,这也是c语言的一个特色,建议你好好地学一下,很有用的。
Ⅱ 为什么C语言能直接访问物理地址而其他高级语言不行
C语言有指针,可以直接访问内存地址,其他高级语言都没有指针的概念,用引用的概念代替了。因为指针的使用不安全,容易出错,内存泄漏等等。
但是C语言C++ 有指针,所以更快,更高效。其他高级语言没有C更快,但是更简单,更安全。
Ⅲ C语言允许直接访问物理地址吗
C本来就是最接近硬件的高级语言,操作物理地址完全没问题,现在很多嵌入式开发也是用C的
Ⅳ 指针指向的地址是什么地址
在windows下是虚拟地址(逻辑地址)。在不同的机器上也有所不同:在8086实模式下是开启了分段机制,指针是20位形式的;保护模式下开启分页分段,指针指向本进程的32位逻辑地址,由CPU负责将其转换成物理地址,而转化过程中的页表由操作系统维护,处理换页也有操作系统承担
Ⅳ c语言问题。 用指针可以直接修改物理内存地址的值 但可不可以修改其他应用程序的内存地址,就像用wi
应用程序连“物理内存”都碰不到
程序在操作的“数据”到底是什么?是真正存储在内部存储器中,还是放在外部存储器(例如硬盘文件)?说起来是很难被一般程序预测的。如果操作系统觉得合适,就可以把内存中的内容“交换”到硬盘上的“页面文件”中——因此数据可能根本没有存储在“内存”中
即使是存储在内部存储器中,又是存储在哪里?是一级缓冲区?二级缓冲区?数据是只有一份,还是被制作了副本,把两个副本分别交给两个处理器,待处理完毕再进行汇总——因此只修改其中一个根本没用?
这些硬件的细节,程序根本接触不到。即使其中有些工作真的不能仅仅只靠硬件完成,也是给操作系统处理掉了。更高层的程序根本不用考虑这种繁杂的细活
Ⅵ C语言中,如何让指针指向一个已知地址
让指针指向一个已知地址,必须转换类型,在地址前面加上int*,否则不成功。
指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points
to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。
Ⅶ 关于C语言的指针与虚拟地址,物理地址的关系问题
由于WINDOWS是一个实时多任务的操作系统,所以系统为每个进程(以32位进程为例)4G内存,所以每个进程看起来都拥有4GB的内存,但是该内存为虚拟内存空间,如果空间不够还会使用硬盘进行虚拟。4G的内存,操作系统占用2G,应用可以使用2G。所以c语言的指针一定是指向了虚拟的地址,而具体的物理地址由操作系统调度和调配。
Ⅷ c/c++的指针是指向物理地址还是逻辑地址
c/c++的指针是指向逻辑地址。
以windows平台为例,任何一个C++程序肯定是运行在某一个进程中,windows的32位系统对每一个用户进程都管理着一个寻址范围为4GB的地址空间, 各个进程的地址空间是相互独立的,很显然这是一个逻辑的地址空间,C++指针指向进程内的一个逻辑内存地址,然后由操作系统管理着从逻辑地十到物理地址的映射。
Ⅸ 怎么查询电脑物理地址
步骤如下:
方法一
1.打开【运行】按钮。
(9)指针访问物理地址扩展阅读:
描述
地址从0开始编号,顺序地每次加1,因此存储器的物理地址空间是呈线性增长的。它是用二进制数来表示的,是无符号整数,书写格式为十六进制数。它是出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果。用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。
在计算机科学中,物理地址(英语:physical address),也叫实地址(real address)、二进制地址(binary address),它是在地址总线上,以电子形式存在的,使得数据总线可以访问主存的某个特定存储单元的内存地址。
在和虚拟内存的计算机中,物理地址这个术语多用于区分虚拟地址。尤其是在使用内存管理单元(MMU)转换内存地址的计算机中,虚拟和物理地址分别指在经MMU转换之前和之后的地址。在计算机网络中,物理地址有时又是MAC地址的同义词。这个地址实际上是用于数据链路层,而不是如它名字所指的物理层上的。
Ⅹ linux 用户空间怎样使用指针直接访问物理地址
调用到真正的read函数
这个文件描述结构以及它的openfread是C库函数,
系统调用read会进入内核的sys_read(好像是这个名称),它会调用到系统调用read,close,找到一个文件描述结构,
这个文件描述结构中包含了包括open, close, read, write在内的一系列的函数指针
然后,它就根据函数指针,read,write等函数,
它根据传入的文件描述符