C++学习笔记六之函数如何使用指针来处理数组?

来源:互联网 发布:java递归函数调用时 编辑:程序博客网 时间:2024/06/16 07:44

【代码示例】

#include <iostream>#include <stdlib.h>const int ArSize = 8;int sum_arr(int arr[],int n);int main(){using namespace std;int cook [ArSize]= {1,2,3,4,5,6,7,8};int sum = sum_arr(cook, ArSize);cout << "Total cook eaten: "<<sum<<"\n";cout << cook<<endl;//代表数组第一个元素的地址int a[] = {1,2,3,4,5,6,7,8};int *b=&a[0];cout << "数组: ";for (int i=0;i<8;i++){cout <<a[i]<<"\t";}cout << endl;cout << "指针: ";for (int i = 0; i<8; i++){cout <<*(b+i)<<"\t";}cout << endl;cout << "数组地址: ";for (int i = 0; i<8; i++){cout <<&a[i] << " ";}cout << endl;cout << "指针地址: ";for (int i = 0; i<8; i++){cout << (b + i) << " ";}cout << endl;cout << "sizeof(a): " << sizeof(a) << "sizeof(b): " << sizeof(b) << endl;system("pause");return 0;}int sum_arr(int arr[], int n){int total = 0;for (int i = 0; i < n; i++){total = total + arr[i];}return total;}
【代码解析】

1、

int a[] = {1,2,3,4,5,6,7,8};int *b=&a[0];
这里定义了一个数组和指针,然后把数组的第一个元素的地址传递给了b。

2、

cout << "数组: ";for (int i=0;i<8;i++){cout <<a[i]<<"\t";}cout << endl;cout << "指针: ";for (int i = 0; i<8; i++){cout <<*(b+i)<<"\t";}cout << endl;
这一部分是用指针加法数组下标来遍历数组,效果是一样的,每个元素的地址也是一样的。

3、

cout << "sizeof(a): " << sizeof(a) << "sizeof(b): " << sizeof(b) << endl;
这是一个有趣的部分,a和b指向的是同一个地址,也就是元素的首地址,但输出的结果却不相同。sizeof(a)=32,而sizeof(b)=4。这是因为sizeof(a)得到的是整个数组的长度,而sizeof(b)得到是一个指针变量的长度
【演示结果】






阅读全文
0 0
原创粉丝点击