继续讨教指针基本问题

C语言 码拜 8年前 (2016-04-10) 853次浏览
#include <stdio.h>
int main(void)
{
	int a=20;  //声明整形变量a的值是20
	int *b=&a; //把变量a的内存地址取出来,赋值给指针变量b
	*b = 21; //把指针变量b的实际数值取出来,修改为21
	printf("%d\n", a); //利用指针的地址和取值运算符改变了a的值。
	return 0;
}

注释是本人对代码的理解,可以运行。利用地址修改数据,结果是不要a=21就把变量值改掉。
问一下这个例子能否体现了指针最最基本的作用?
本人的理解是要改内存数据,既可通过变量改,也可通过地址改,而发明指针目的就是让我们操作地址。

解决方案

10

c语言的指针,是对汇编指令的自然延伸,汇编中无所谓变量,变量无非是内存地址中的一些数据而已。只要是找对内存地址,对地址中的数据操作,就可以认为是对变量进行了操作。所以,不是c语言发明了指针,而是指针将汇编语言直接操作内存地址的概念稍微抽象了一下。
指针不仅仅能是操作简单变量,在c语言中,几乎任何东西都可以用指针来操作。结构体指针,函数指针,数组指针….

10

引用:
Quote: 引用:

原因是指针太灵活,可以指向任何地址,这就要求程序员对内存的控制十分精准才行,无形中增大了程序出错的概率。而指针出错调试起来会更加麻烦,原因是不见得崩溃的地方就是真正出错的地方,很可能是很多代码之前的指针的操作错误导致的。所以,以后的高级语言把“操作指针”这种对程序员要求太高的功能由编译器或虚拟机来完成了。

指针只是提供便利对吧,没有,程序员也能完成工作?
有没有情况是非指针不可?

操作系统,编译器
以及使用API,调用驱动,写驱动
凡是涉及底层的往往需要指针
不用指针,绕的弯子太大,还不好用
凡是,涉及底层,不需要指针的语言,都是对指针做了某种封装的
没有这些封装就只好用汇编实现了,
要么提供指针或引用,要么用汇编,甚至直接写二进制代码,不然的话,封装一下
。引用其实是指针的某种封装


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明继续讨教指针基本问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)