- 热门文章:
- · 我的COM学习笔记
- · C++学习历程
- · C++的历史纪实
- · const的思考
- · Tuples Herb Sutter(陶章志译)
- · 浅析C++里面的宏
- · WTL体系结构(1)
- · C++的程序设计典范
- · C++设计目标和原则
- · 测试2个类型相同的方法
- · 计算cpu速度的小程序
- · Union的迷思
浅谈指针
此文仅适合初学C语言的朋友,凡是学了几个月以上的不要对此文内容嗤之以鼻。
C语言最具特色的是什么?指针。这个答案好像是公论,无论高手还是低手,菜鸟还是老鸟,学过的还是没学过的,但凡是听说过C的,都能回答出来。正是因为C引入了指针的概念,使得他是最接近机器真实模型的高级语言,以至于得到了“中级语言”的称号;象我这样有时候汇编比C用的还多的人体会的更深——单片机编程,我只会汇编,虽然现在开始学C,还是觉得怪怪的。
因此,指针是学习C必须掌握的,如果你畏惧它,不如换一门没有指针的语言。下面有个小例子,希望你能从中得到一些启发。
#include <stdio.h>
void main()
{
int a = 10000;/*-------1*/
int* p, d;/*--------------2*/
p = &d;/*---------------3*/
p = (int*)a;/*-----------4*/
printf("%d %d", a, *p);
}
我来简单讲解一下:
是这样写int *p好还是这样写int* p好?
这两种用法都是可以的,并且每种写法都有拥护者。指针运算符是向右结合的,如果你象2语句那样写,实际上d还是int类型,而不是指针类型,赞成int *p写法的,就是出于这个原因。你说我把int*用括号括起来不就行了,但是编译器会把这样的写法当成是类型转换,而不是类型定义。赞成int* p写法的,原因就是直观,很清晰的表示p是个整型的指针。例如这样的写法int* p = &a;换成int *p = &a;就很让人费解。为了避免象2语句的误解,有个规则就是,一行只定义一个指针。
具体怎样写,要看个人习惯,每种写法人们都是认可的。
指针的危险性
指针实际上就是一个存有内存地址的变量,用指针访问就相当于间接寻址。很显然,你可以给指针赋不同的数值,这样就能访问任意的内存——太危险了,例如4语句。在16位系统中,你对这种使用毫无办法。幸运的是,在32位系统中,这种使用被禁止了。
指针的类型
你说指针不就是一个存有内存地址的变量吗,既然都是“内存地址”类型,干什么还要类型啊。但是需要注意的是,当你从指针还原的时候,它指向的那块内存,究竟是按照整型来用啊还是别的什么结构?从这个角度来说,当你很清楚指针指向的内存的内容,做指针类型变换也是允许的。
关于指针,每本C语言书籍都有很详细的介绍,我就不再多说了。当你粗浅的了解汇编的时候,相信你会对指针有更深刻的理解。
- · 小技巧:一个工具条内放多排按钮
- · 闲言碎语话编程
- · 解析#pragma指令
- · 解析VC++6中的指针
- · 深度解析VC中的消息(上)
- · 数据结构学习(C++)——稀疏矩阵(十字链表【2】)
- · 数据结构学习(C++)——栈和队列(定义和实现)
- · 四则运算实现
- · 为什么应该升级到Struts 1.1?
- · 深度解析VC中的消息(中)
- · 恶草丛生的阴暗角落---虚拟机制(上)
- · 数据结构学习(C++)——栈应用(表达式求值)
- · 解除心头的困惑--纯虚函数
- · 快捷方式的函数
- · WTL体系结构(2)
- · 恶草丛生的阴暗角落---虚拟机制(下)
- · 深度解析VC中的消息(下)
- · 数据结构学习(C++)——队列应用(事件驱动模拟)
- · 新手对COM的认识及疑惑
- · 全面解读WM_NOTIFY
- · 开发集成Microsoft Visual Basic for Application的应用系统(一)
- · 浅谈 MFC 的子类化机制和该机制的一个应用(1)
- · 深度剖析消息反射机制
- · 浅谈 MFC 的子类化机制和该机制的一个应用(2)
- · 我的CLog的实现
- · Hello World by Microsoft Speech SDK 5.1
- · 初级X编程2
- · 彻底粉碎“指针与数组的困惑”(上)
- · ADSL组建局域网快捷方案
- · ADSL组建局域网快捷方案
- · 形形色色的自定义消息(上)
- · 数据结构学习(C++)——线性链式结构总结(代后记)【1】
- · vc入门宝典(九)
- · 形形色色的自定义消息(下)
- · C++中的预处理(上)
- · 非常时期突现网络办公的魅力!
- · asp_dll
- · 学Java,观GP
