好文档 - 专业文书写作范文服务资料分享网站

7 第6章 数组、指针与字符串(二)

天下 分享 时间: 加入收藏 我要投稿 点赞

第6章 数组、指针与字符串(二) 6.2.6 用指针访问数组元素

数组是一组连续存储的同类型数据,可以通过指针的算术运算,使指针依次指向数组的各个元素,进而可以遍历数组。 定义指向数组元素的指针 ● 定义与赋值

例:int a[10], *pa; pa=&a[0];或 pa=a; ● 等效的形式

■ 经过上述定义及赋值后

*pa就是a[0],*(pa+1) 就是a[1],... *(pa+i) 就是a[i]。 a[i],*(pa+i),*(a+i),pa[i]都是等效的。 ● 注意

■ 不能写 a++,因为a是数组首地址、是常量。 例6-7

设有一个int型数组a,有10个元素。用三种方法输出各元素: ● 使用数组名和下标 ● 使用数组名和指针运算 ● 使用指针变量

例6-7 (1) 使用数组名和下标访问数组元素

//例6_7 (1) 使用数组名和下标访问数组元素.cpp(P205) #include using namespace std;

int main() {

}

int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; for (int i = 0; i < 10; i++) cout << a[i] << \; cout << endl;

return 0;

运行结果:

例6-7 (2) 使用数组名和指针运算访问数组元素

//例6_7 (2) 使用数组名和指针运算访问数组元素.cpp(P205) #include using namespace std;

int main() {

int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; for (int i = 0; i < 10; i++) cout << *(a+i) << \; cout << endl;

return 0; }

运行结果:

例6-7 (3) 使用指针变量访问数组元素

//例6_7 (3) 使用指针变量访问数组元素.cpp(P206)

#include using namespace std;

int main() {

int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; for (int *p = a; p < (a + 10); p++) cout << *p << \; cout << endl;

return 0;

}

运行结果:

6.2.7 指针数组 ● 数组的元素是指针型

例6-8 利用指针数组存放矩阵

//例6_8 利用指针数组存放矩阵源.cpp(P207) #include using namespace std;

int main() {

int line1[] = { 1, 0, 0 }; //定义数组,矩阵的第一行 int line2[] = { 0, 1, 0 }; //定义数组,矩阵的第二行 int line3[] = { 0, 0, 1 }; //定义数组,矩阵的第三行

//定义整型指针数组并初始化

int *pLine[3] = { line1, line2, line3 };

cout << \ << endl; //输出单位矩阵 for (int i = 0; i < 3; i++) {

//对指针数组元素循环

for (int j = 0; j < 3; j++) //对矩阵每一行循环

cout << pLine[i][j] << \; cout << endl; }

return 0; }

输出结果为:

指针数组与二维数组对比

● 对比例6-8中的指针数组和如下二维数组

int array2[3][3] ={ { 1,0,0 }, { 0,1,0 }, { 0,0,1 } };

例6-9 二维数组举例

//例6_9 二维数组举例.cpp(P208)

#include using namespace std;

int main() {

int array2[3][3]= { { 11, 12, 13 }, { 21, 22, 23 }, { 31, 32, 33 } }; for(int i = 0; i < 3; i++) {

}

for(int j = 0; j < 3; j++)

cout << *(*(array2 + i) + j) << \;//逐个输出二维数组第i行元素值

cout << endl; }

return 0;

运行结果:

指针与函数

6.2.8 以指针作为函数参数 为什么需要用指针做参数?

● 需要数据双向传递时(引用也可以达到此效果)

■ 用指针作为函数的参数,可以使被调函数通过形参指针存取主调函数中实参指针指向的数据,实现数据的双向传递

● 需要传递一组数据,只传首地址运行效率比较高 ■ 实参是数组名时形参可以是指针

例6-10 读入三个浮点数,将整数部分和小数部分分别输出

//例6_10 读入三个浮点数,将整数部分和小数部分分别输出.cpp(P209) #include using namespace std;

//将实数x分成整数部分和小数部分,形参intpart、fracpart是指针 void splitFloat(float x, int *intPart, float *fracPart) { }

*intPart = static_cast(x); //取x的整数部分 *fracPart = x - *intPart;

//取x的小数部分

7 第6章 数组、指针与字符串(二)

第6章数组、指针与字符串(二)6.2.6用指针访问数组元素数组是一组连续存储的同类型数据,可以通过指针的算术运算,使指针依次指向数组的各个元素,进而可以遍历数组。定义指向数组元素的指针●定义与赋值例:inta[10],*pa;pa=&a[0];或pa=a;●等效的形式■经过上述定义及赋值后<
推荐度:
点击下载文档文档为doc格式
8ulss5up8i6ksx797jw59jajr88l5800wu5
领取福利

微信扫码领取福利

微信扫码分享