C++练习:返回值指针or引用

来源:互联网 发布:苹果越狱美化软件 编辑:程序博客网 时间:2024/06/03 16:57
#include <cstddef>using std::size_t;#include <iostream>using std::cout; using std::endl;// code to illustrate declarations of array-related typesint arr[10];          // arr is an array of ten intsint *p1[10];          // p1 is an array of ten pointersint (*p2)[10] = &arr; // p2 points to an array of ten intstypedef int arrT[10]; // arrT is a synonym for the type array of ten ints// two ways to declare function returning pointer to array of ten intsarrT* func(int i);               // use a type aliasint (*func(int i))[10];          // direct declaration// two arraysint odd[] = {1,3,5,7,9};int even[] = {0,2,4,6,8};// function that returns a pointer to an int in one of these arraysint *elemPtr(int i){    // returns a pointer to the first element in one of these arrays    return (i % 2) ? odd : even;  }// returns a pointer to an array of five int elements//返回一个指针,该指针指向5个int元素构成的数组int(*arrPtr(int i))[5]{    return (i % 2) ? &odd : &even; // returns a pointer to the array }// returns a reference to an array of five int elements//返回一个由5个int元素构成的数组的引用int (&arrRef(int i))[5]{    return (i % 2) ? odd : even;}int main(){    int *p = elemPtr(6);         // p points to an int    int (*arrP)[5] = arrPtr(5);  // arrP points to an array of five ints    int (&arrR)[5] = arrRef(4);  // arrR refers to an array of five ints    for (size_t i = 0; i < 5; ++i)        // p points to an element in an array, which we subscript        cout << p[i] << endl;      for (size_t i = 0; i < 5; ++i)        // arrP points to an array,         // we must dereference the pointer to get the array itself        cout << (*arrP)[i] << endl;    for (size_t i = 0; i < 5; ++i)        // arrR refers to an array, which we can subscript        cout << arrR[i] << endl;    return 0;}
0 0
原创粉丝点击