理解C语言指针
来源:互联网 发布:linux ffmpeg与lame 编辑:程序博客网 时间:2024/04/29 21:56
C语言指针的理解
C语言的指针历来是一个不好理解的概念。C语言的指针是一种变量。这个变量只能存放无符号整数。从这点讲它与是要与无符号整数没有什么区别。你完全可以把它用做无符号整数。但是,这样用就失去了它的作用。那它有什么特别的用处呢?这个请先思考下面几个问题。
1 怎样让函数返回多个参数?
2 怎样让函数改变传入参数的值?
3 怎样让系统动态的为程序增加变量空间?
4 怎样实现一个回调函数?
以上这些问题都可以使用指针来完成。
我们程序中的变量都放在内存了。具体内存哪里?这个位置就是内存地址。
例如我们在程序中定义了一个变量
int myVar;
myVar=123;
编译程序将它指定到地址xxxx。myVar=123;的执行过程就是把123存入到xxxx
step 1
| : |
| : |
| : |
xxxx | |
| : |
| : |
step 2
| : |
| : |
| : |
xxxx |123 |
| : |
| : |
| : |
如果我们输出
printf("myVar address=%d,value=%d/n",&myVar,myVar);
结构就是
myVar address=xxxx,value=123
我们接下来定义一个指针。
int *mypoing;
int myVar;
myVar=123;
mypoing=&myVar;
*mypoint=321;
系统指定*mypoint存放在地址yyyy、myVar存放在地址xxxx。执行myVar=123。执行mypoing=&myVar。执行*mypoint=321就如同执行myVar=321。因为程序操作的是同一段地址。
step 1
| : |
| : |
| : |
xxxx | |
| : |
yyyy | |
step 2
| : |
| : |
| : |
xxxx |123 |
| |
yyyy | |
|| : |
step 3
| : |
| : |
| : |
xxxx | |
| |
yyyy |xxxx |
step 4
| : |
| : |
| : |
xxxx |321 |
| : |
yyyy |xxxx |
| : |
printf("myVar address=%d,value=%d/n",&myVar,myVar);
printf("*mypoint address=%d,value=%d/n",*mypoint,mypoint);
结果为:
myVar address=xxxx,value=321
*mypoint address=321,value=xxxx
我们来讲一下scanf()函数。这个函数能够把数据存放到我们指定的变量里。那么它是怎么做到的。scanf首先定义一下你要输入数据的类型。"%d"说明你输入一个整数。那么scanf就把从键盘输入的ascii吗转换成一个指数。放到哪里。放到你指定的变量里。你怎么指定的?就是你&myVar怎样的地址里。这就是函数改变传入参数的值。
(上)
- 理解C语言指针
- 深入理解C语言指针
- 深入理解C语言指针
- 深入理解C语言指针
- 深入理解C语言指针
- 深入理解C语言指针
- C语言指针深入理解
- C语言复杂指针理解
- 理解c语言的指针
- C语言中的指针理解
- 深入理解C语言指针
- c语言指针的理解
- C 语言指针怎么理解?
- C语言整型指针理解
- 深度理解C语言------指针
- 【C语言】理解指针数组 数组指针 函数指针
- 深入理解C语言指针的奥秘- -- -
- 深入理解C语言指针的奥秘
- HTTP协议之Chunked解析
- BPEL实例运行[1]——改写源码
- 在ASP.NET 2.0中建立站点导航层次
- oracle job queue/oracle 作业队列
- 一个ASP.NET中使用的MessageBox类
- 理解C语言指针
- ASP.NET中使用MD5和SHA1算法加密
- ASP.NET实现身份模拟
- Serv-U 匿名登录
- asp.net中长内容自动分页的实现
- asp.net/c#字符格式化大总结
- 简洁实用的表单验证程序
- Undercut
- ASP.NET中用healthMonitor属性用