本文共 1809 字,大约阅读时间需要 6 分钟。
#includeusing namespace std;void tArray1(int *p){ for (int i = 0; i < 3; i++) { *(p+i) = *(p+i)+1; cout << *(p+i) << endl; }}void tArray2(int a[]){ for (int i = 0; i < 3; i++) { a[i] = a[i] + 1; cout << a[i] << endl; }}void tFunc1(void (*f)()){ (*f)();}void func1(){ cout << "hello world" << endl;}float *find(float (*ptr)[4],int n){ float *pt; pt = *(ptr + n); return (pt);}void main(){ /**************** 指针和数组的关系***********************/ //对指针可以直接进行下标检索操作,这时把指针当前空间作为数组首元素进行操作,自己进行越界检查 //这个时候解引用运算符和下标运算符检索效果是相同的 /*int a[3] = {1,2,3}; cout << a < > m; float *p = find(score,m); for (int i = 0; i < 4;i++) { cout<< (*(p+i)) << endl; }*/ /***************动态和静态创建的高维数组及数组标识符的含义及类型*******************************/ /* //小结:其实n维数组(静态创建的数组),它的标识符其实就是最高维(从整体看来第n-1维数组)的首地址 //例如:tri三维数组而言,{ {1,2},{3,4}}和{ {5,6},{7,8}}是第n-1维数组,它们共同构成了一个三维数组, //其实tri就是这两个二位数组的首地址构成的数组的首地址 //静态创建的数组本质上还是一块连续存储的区域 int tri[2][2][2] = { { {1,2},{3,4}},{ {5,6},{7,8}}}; //int (**pt)[2] = tri;//编译会报错,因为tri本质上是一个一维数组的首地址,元素是二位数组的首地址 int (*pt)[2][2] = tri; cout << tri << endl; cout << tri[0] << endl; cout << pt << endl; cout << tri + 1 << endl; cout << tri[1] << endl; cout << pt + 1 << endl; //而动态创建的多维数组跟静态创建的数组从结构而言就不是一个概念 //动态创建的数组各维之间的关系通过上一维中存储的地址来联系,所以不能使用++来就按下一维的地址 int m,n,p; int i = 1; int ***pTri; pTri = new int **[2]; for (m = 0; m<2; m++) { pTri[m] = new int *[2]; } for (m = 0; m < 2; m ++) { for (n = 0; n < 2; n++) { pTri[m][n] = new int[2]; } } for (m = 0; m< 2; m++) { for (n = 0; n<2; n++) { for (p=0; p<2; p++) { pTri[m][n][p] = i; i++; } } } for (m = 0; m< 2; m++) { for (n = 0; n<2; n++) { for (p=0; p<2; p++) { cout << pTri[m][n][p] << endl; } } } cout << pTri << endl; cout << pTri[0] << endl; cout << pTri + 1 << endl; cout << pTri[1] << endl;*/}
转载地址:http://yonmd.baihongyu.com/