*數組、指針、數組指針、指針數組的問題
*/
#include <iostream>
using namespace std;
int main()
{
/*arr是數組,有5 個元素,每個元素的類型是int*(地址類型),
每個元素是指針變量,存放的是地址(即指針),即:指針數組*/
int* arr[5];
//p是一個指針,指向有5 個元素的int數組(指向的是整個數組,而不是其中的某一數組元素)
int (*p)[5];
int ar[5] = {11,16,34};
/*for(int i = 0; i != 5; i++)
cout << "int* arr[5]中的元素:" << arr[i] << endl;
for(int* r = ar; r != ar+5; r++)
cout << *r << ' ';
cout << endl;*/
//***cannot convert ‘int [5]’ to ‘int (*)[5]’ in assignment;類型不一致
//p = ar; //且數組名錶示的是數組ar[0]首元素的地址
p = &ar; //對數組名取地址,表示的是整個數組ar的起始地址
/*for(int i = 0; i != 5; i++)
cout << *(*p+i) << ' '; //(*p)[i] << ' ';
cout << endl;*/
//cout << " p = " << sizeof(p) << endl;
//cout << "*p = " << sizeof(*p) << endl;
//cout << "ar = " << sizeof(ar) << endl;
//如果對eg:int (*)[] 這種指向數組的指針,直接初始化,並且輸出的話,會出現下面的問題
//***scalar object ‘q’ requires one element in initializer
//(標量對象在初始化時需要一個元素)
int (*q)[4];// = {1,23,5,68,12,34};
//***cannot convert ‘int (*)[5]’ to ‘int (*)[6]’ in assignment
//q = &ar;
/*for(int i = 0; i != 6; i++)
cout << (*q)[i] << ' ';
cout << endl;*/
int arry[3][4] = {{1,2,3},{4,5},{6}};
q = arry;
//***cannot convert ‘int (*)[3][4]’ to ‘int (*)[4]’ in assignment
//q = &arry;
//cout << sizeof(arry)/sizeof(arry[0]) << endl;
/*for(int i = 0; i != 3; i++)
{
cout << arry[i] << ' ' << endl; //<< sizeof(arry[i]) << endl;
}
for(; q != arry+3; q++)
{
for(int j = 0; j != 4; j++)
{
cout << *(*q+j) << ' ';
}
cout << endl;
}*/
//for(; q != arry+3; q++)
//cout << q <<endl;
//for(; q != arry+3; q++)
//cout << *q <<endl;
/*for(int i = 0; i != 3; i++)
{for(int j = 0; j != 4; j++)
{
cout << *(*(q+i)+j) << ' '; //q[i][j] <<' ';
}
cout << endl;
}*/
return 0;
}