赞
踩
这种就是最简单的指针指向一个对象。
int *直接指向一个对象;int **指向一个指针
如下:
int initialInt = 10;
int *initialIntPoint = &initialInt; 一个指针对象指向对象
int **initialIntPointPoint = &initialIntPoint; 这个是双指针,指向一个指针对象
cout << "对象: " << initialInt << endl;
cout << "对象地址: " << &initialInt << endl;
cout << "指针对象: " << initialIntPoint << endl; 对象的地址
cout << "指针解引用: " << *initialIntPoint << endl; 解引用获得对象的值
cout << "双指针对象: " << *initialIntPointPoint << endl; 指针对象的地址
cout << "双指针解引用: " << *initialIntPointPoint << endl;
cout << "双指针双解引用: " << **initialIntPointPoint << endl << endl; 使用双解引用获得原本的值
int initialArray[10] = { 1, 5, 10, 15, 20 };
cout << "数组首地址: " << initialArray << endl; 就一维,所以直接就是第一个的位置
cout << "数组首地址解引用: " << *initialArray << endl;
cout << "数组首地址+1解引用: " << *(initialArray + 1) << endl << endl;int initialTwoArray[2][4] = { { 2, 5, 6, 8 }, { 22, 55, 66, 88 } };
cout << "二维数组第一行地址: " << initialTwoArray << endl; 相当于指向某一维
cout << "二维数组第一行第一个地址: " << *initialTwoArray << endl; 指向某一维的第一个的地址
cout << "二维数组第一行第一个地址解引用(第一个的值): " << **initialTwoArray << endl; 某一维的第一个的值
cout << "二维数组第一行地址第一个地址+1: " << *initialTwoArray + 1 << endl; 指向某一维的第二个地址
cout << "二维数组第一行地址第一个地址+1解引用(第二个值): " << *(*initialTwoArray + 1) << endl;
cout << "二维数组第一行地址+1(第二行): "<<initialTwoArray + 1 << endl; 指向第二维
cout << "二维数组第一行地址+1的第一个地址(第二行第一个的地址): " << *(initialTwoArray + 1) << endl; 第二维的第一个的地址
cout << "二维数组第一行地址+1的第一个地址解引用(第二行第一个的值): " << **(initialTwoArray + 1) << endl; 第二维的第一个的值
cout << "示例:第二行的第二个的值: "<<*(*(initialTwoArray + 1) + 1) << endl << endl; 第一维加一的解引用表示第二维的首地址 再加一的解引用表示第二维的第二个的值
int *initialPointArray[10];
*initialPointArray = initialArray;
cout << "指向一个指针数组的地址: " << initialPointArray << endl;
cout << "指向一个指针数组的地址的第一个指针的地址(数组第一个对象位置): " << *initialPointArray << endl;
cout << "指向一个指针数组的地址的第一个指针的地址的解引用(数组第一个对象值): " << **initialPointArray << endl;
cout << "指向一个指针数组的地址的第二个指针的地址的解引用(数组第二个对象值): " << *(*initialPointArray + 1) << endl << endl;
int(*initialArrayPoint)[10];
initialArrayPoint = &initialArray;
cout << "指针指向一个位数为10的数组:" << endl; 表示指向一个一维数组
cout << "指针指向一个数组的指针地址: " << initialArrayPoint << endl; 代表这个数组第一个位置
cout << "指针指向一个数组的指针地址的第一个地址: " << *initialArrayPoint << endl; 这个数组第一个位置的地址
cout << "指针指向一个数组的指针地址的第一个地址的值: " << **initialArrayPoint << endl << endl; 这个数组第一个位置的值int(*initialArrayPoint2)[4];
initialArrayPoint2 = *(&initialTwoArray);
cout << "指针指向一个位数为4的二维数组:" << endl; 表示指向一个二维数组
cout << "指针指向一维数组的指针地址: " << initialArrayPoint2 << endl; 二维数组的第一维
cout << "指针指向一维数组的指针地址的第一个地址: " << *initialArrayPoint2 << endl; 二维数组第一维的第一个地址
cout << "指针指向一维数组的指针地址的第一个地址的值: " << **initialArrayPoint2 << endl; 二维数组的第一维的第一个的值
cout << "指针指向二维数组的指针地址: " << initialArrayPoint2+1 << endl; 二维数组的第二维
cout << "指针指向二维数组的指针地址的第一个地址: " << *(initialArrayPoint2+1) << endl;
cout << "指针指向二维数组的指针地址的第一个地址的值: " << **(initialArrayPoint2+1) << endl; 二维数组第二维的第一个的值
- #include<iostream>
- using namespace std;
-
- int main()
- {
- int initialInt = 10;
- int *initialIntPoint = &initialInt;
- int **initialIntPointPoint = &initialIntPoint;
- cout << "对象: " << initialInt << endl;
- cout << "对象地址: " << &initialInt << endl;
- cout << "指针对象: " << initialIntPoint << endl;
- cout << "指针解引用: " << *initialIntPoint << endl;
- cout << "双指针对象: " << initialIntPointPoint << endl;
- cout << "双指针解引用: " << *initialIntPointPoint << endl;
- cout << "双指针双解引用: " << **initialIntPointPoint << endl << endl;
-
- int initialArray[10] = { 1, 5, 10, 15, 20 };
- cout << "数组首地址: " << initialArray << endl;
- cout << "数组首地址解引用: " << *initialArray << endl;
- cout << "数组首地址+1解引用: " << *(initialArray + 1) << endl << endl;
-
- int initialTwoArray[2][4] = { { 2, 5, 6, 8 }, { 22, 55, 66, 88 } };
- cout << "二维数组第一行地址: " << initialTwoArray << endl;
- cout << "二维数组第一行第一个地址: " << *initialTwoArray << endl;
- cout << "二维数组第一行第一个地址解引用(第一个的值): " << **initialTwoArray << endl;
- cout << "二维数组第一行地址第一个地址+1: " << *initialTwoArray + 1 << endl;
- cout << "二维数组第一行地址第一个地址+1解引用(第二个值): " << *(*initialTwoArray + 1) << endl;
- cout << "二维数组第一行地址+1(第二行): "<<initialTwoArray + 1 << endl;
- cout << "二维数组第一行地址+1的第一个地址(第二行第一个的地址): " << *(initialTwoArray + 1) << endl;
- cout << "二维数组第一行地址+1的第一个地址解引用(第二行第一个的值): " << **(initialTwoArray + 1) << endl;
- cout << "示例:第二行的第二个的值: "<<*(*(initialTwoArray + 1) + 1) << endl << endl;
-
- int *initialPointArray[10];
- *initialPointArray = initialArray;
- cout << "指向一个指针数组的地址: " << initialPointArray << endl;
- cout << "指向一个指针数组的地址的第一个指针的地址(数组第一个对象位置): " << *initialPointArray << endl;
- cout << "指向一个指针数组的地址的第一个指针的地址的解引用(数组第一个对象值): " << **initialPointArray << endl;
- cout << "指向一个指针数组的地址的第二个指针的地址的解引用(数组第二个对象值): " << *(*initialPointArray + 1) << endl << endl;
-
- int(*initialArrayPoint)[10];
- initialArrayPoint = &initialArray;
- cout << "指针指向一个位数为10的数组:" << endl;
- cout << "指针指向一个数组的指针地址: " << initialArrayPoint << endl;
- cout << "指针指向一个数组的指针地址的第一个地址: " << *initialArrayPoint << endl;
- cout << "指针指向一个数组的指针地址的第一个地址的值: " << **initialArrayPoint << endl << endl;
-
- int(*initialArrayPoint2)[4];
- initialArrayPoint2 = *(&initialTwoArray);
- cout << "指针指向一个位数为4的二维数组:" << endl;
- cout << "指针指向一维数组的指针地址: " << initialArrayPoint2 << endl;
- cout << "指针指向一维数组的指针地址的第一个地址: " << *initialArrayPoint2 << endl;
- cout << "指针指向一维数组的指针地址的第一个地址的值: " << **initialArrayPoint2 << endl;
- cout << "指针指向二维数组的指针地址: " << initialArrayPoint2+1 << endl;
- cout << "指针指向二维数组的指针地址的第一个地址: " << *(initialArrayPoint2+1) << endl;
- cout << "指针指向二维数组的指针地址的第一个地址的值: " << **(initialArrayPoint2 + 1) << endl << endl;
-
- system("pause");
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。