- 1
- 0
- 约1.07万字
- 约 175页
- 2021-07-14 发布于北京
- 举报
第6章 善于使用指针与引用;;;;例如,有说明:
int a ;
double b ;;例如,有说明:
int a ;
double b ;;计算机程序在存储数据时必须跟踪的3种基本属性:
信息存储在何处;
存储的内容(值)是多少;
存储信息是什么类型;
定义一个常规的简单变量:
int a;
定义语句指出了值的类型和变量名,还让程序为值分配内存,并在内部将变量名与所分配的内存单元联系在一起;;如 int a; 假设为a分配的内存单元的地址
为2008,2009,2010,2011
a的首地址为2008
a=123; a总是与2008地址联系在一起.
对a赋值123的实际操作是:
由a得知地址2008, 将123存
储在首地址为2008的连续4个
单元中.
----直接存取方式;如何找到变量的地址; 地址运算符举例;另一种新的策略;一种特殊类型的变量——指针变量——用于存储地址值(即指针值)的变量;
例如,假设pa是一个指针变量,则pa的值是一个内存地址,而*pa表示在该地址处的存储单元(变量), *pa也称为由pa所指向的变量.
int x=123;
指针变量pa=x;
*pa是由pa指向的变量, 即x
*pa与x等同; int *pa;
表明:定义的变量pa是指针变量, pa所指向的变量的类型为int (即 *pa是整型变量)
可以这样说,pa是指针(地址),而*pa是int型变量,而不是指针。
;;;;;;;;;;;;;1.5.3 指针变量与间址访问;用相同的方法定义其它类型指针;不同类型的指针变量占用相同个字节数;使用指针变量的关键:指针变量的指向;初始化指针举例;注意;指针和数字;注意 与* 运算符;阅读程序段,写出运行结果:; 练习 指出程序段中的错误:;例6.2 输入a,b两个整数,按先大后小的顺序输出a和b.(用指针变量处理);6.2.3 指针作为函数参数;void f(int *pa)
{
*pa=20;
};;例 交换两个变量的值;例 不能交换两个变量的值;例 6.4 输入a,b,c 3个整数,按由大到小顺序输出;6.3 数组与指针 ; 指针 - 指针 ? 整数:两个地址之差/类型的字节数;
double *pa, *pb;
若 pa=2000地址, pb=2016地址.
pb – pa = (2016-2000)/sizeof(double) =16/8= 2
即 pb与pa指向的位置相差了2个double数据的距离 ;让指针变量???向数组首地址;例.用指针引用数组元素;输出pa和*pa的值;同样用指针法输出b数组元素;b[1]和 *(b+1)是等价的;区分sizeof(pa)和sizeof(a);int a[ ]={3,4,5}, *p=a;
cout*p++;
cout*p;
;int a[ ]={3,4,5},*p=a;
cout (*p)++;
couta[0]a[1]a[2];
;;指针变量与数组 ;;;;;;;;;;;;// 例 用指针变量访问数组
#includeiostream
void main()
{ int a[] = { 1, 3, 5, 7, 9 } , i , *p ;
for( p = a; p a+5 ; p ++ )
cout a[ p-a ]= *p \t;
cout endl;
for( p = a, i = 0 ; i 5; i ++ )
cout a[ i ]= p[i] \t;
cout endl ;
};// 例 用指针变量访问数组
#includeiostream
void main()
{ int a[] = { 1, 3, 5, 7, 9 } , i , *p ;
for( p = a; p a+5 ; p ++ )
cout a[ p-a ]= *p \t;
cout endl;
for( p = a, i = 0 ; i 5; i ++ )
cout a[ i ]= p[i] \t;
cout endl ;
};// 例 用指针变量访问数组
#includeiostream
原创力文档

文档评论(0)