关于指针(知识收藏)
2008-04-22 17:07
218 查看
6.2.1 指针变量的定义
在C程序中,存放地址的指针变量需专门定义;
int *ptr1;
float *ptr2;
char *ptr3;
表示定义了三个指针变量ptr1、ptr2、ptr3。ptr1可以指向一个整型变量, ptr2可以指向一个实型变量,ptr3可以指向一个字符型变量,换句话说, ptr1、ptr2、ptr3可以分别存放整型变量的地址、实型变量的地址、字符型变量的地址。
定义了指针变量,我们才可以写入指向某种数据类型的变量的地址,或者说是为指针变量赋初值:
int *ptr1,m= 3;
float *ptr2, f=4.5;
char *ptr3, ch='a';
ptr1 = & m ;
ptr2 = & f ;
ptr3 = & c h ;
上述赋值语句ptr1 = & m表示将变量m的地址赋给指针变量ptr1,此时ptr1就指向m。三条赋值语句产生的效果是ptr1指向m;ptr2指向f;ptr3指向ch 。用示意图6 - 3描述如下:
需要说明的是,指针变量可以指向任何类型的变量,当定义指针变量时,指针变量的值是随机的,不能确定它具体的指向,必须为其赋值,才有意义。
6.2.2 指针变量的引用
利用指针变量,是提供对变量的一种间接访问形式。对指针变量的引用形式为:
*指针变量
其含义是指针变量所指向的值。
[例6-1] 用指针变量进行输入、输出。
m a i n ( )
{
int *p,m;
s c a n f ( " % d " , & m ) ;
p = & m ; / *指针p指向变量m * /
printf("%d",*p);
/* p是对指针所指的变量的引用形式,与此m意义相同* /
}
运行程序:
R U N ¿
3¿
3
上述程序可修改为:
m a i n ( )
{
int *p,m;
p = & m ;
s c a n f ( " % d " , p ) ; /* p是变量m的地址,可以替换& m * /
printf("%d", m);
}
运行效果完全相同。请思考一下若将程序修改为如下形式:
m a i n ( )
{
int *p,m;
s c a n f ( " % d " , p ) ;
p = & m ;
printf("%d", m);
}
会产生什么样的结果呢?事实上,若定义了变量以及指向该变量的指针为:
int a,*p;
若p=&a; 则称p指向变量a,或者说p具有了变量a的地址。在以后的程序处理中,凡是可以写& a的地方,就可以替换成指针的表示p,a就可以替换成为* p。
相关文章推荐
- 基础知识之关于far,near,huge,base指针
- 关于常量指针 和 指针常量及 typedef 中一些难以理解的知识
- [收藏]关于栈和堆的基础知识
- 关于this指针指向的知识回顾
- 关于 frame的一些基本知识 分类: ffmpeg-SDL-VLC-Live555 2013-07-22 16:30 315人阅读 评论(0) 收藏
- 关于Request.params的知识收藏
- C语言关于数组、指针、函数和结构体的其他知识
- C语言中关于数组、指针以及函数的一些基本知识
- 10-12关于指针的一些知识
- 关于指针的一点儿小知识
- 关于指针字符串的知识
- 这篇关于野指针的文章写得太有个性了!收藏了
- C++关于指针的简单知识
- 我收藏的技术知识图(每张都是大图)关于XX背后的知识、技术图,例如:Linux、Nginx架构、PHP知识卡、机会、HTML5移动、Android系统架构、YII架构的典型流程、Css知识表
- 关于const引用、常量指针、指针常量的一些知识
- 关于指针的一些知识
- 关于指针的一点知识和九度oj1518
- 关于函数指针和指针函数的理论知识
- 关于指针的一些知识,记多维数组指针、指针数组、指针的指针和指向函数的指针
- C语言基础:C语言指针(4) - 补充一点关于指针的小知识