# 指標與多維陣列題目練習(必看)
[指標與多維陣列題目答案](/q7rQn7jfSaGtLL9vMqmZxQ)
[指標閱讀](https://wellbay.cc/thread-1991596.htm)
## 第一題
``` c=
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
double *tmp;
double data[4][4]={{5,4,12,17},{9,10,31, 21},{7, 14,12, 8},{27,34,42,18}};
tmp = data[3];
cout << *tmp <<endl;
cout << (--tmp)[4] << endl;
cout << ++(--tmp)[1] <<endl;
cout << ++*(data+2)[0] <<endl;
cout << --tmp++[-7] <<endl;
return 0;
}
```
## 第二題
``` c=
#include <iostream>
#include <stdio.h>
#include <stdlib,h>
int main(){
double *ptr;
double array[3][4]={{10,11,12,13},{4,5,6,7},{18, 19,20,21}};
ptr =(int*)array;
printf("%d\n",array[1][2]);
ptr++;
printf("%d\n", *ptr);
printf("%d\n %d\n",(*(array+1))[1],*((array+1)[1]));
ptr++;
printf("%d\n", *ptr);
system("pause");
return 0;
}
```
## 第三題
``` c=
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
double *tmp;
double data[4][3]={{1,3,10},{7,10,11},{2, 12,
6},{9,9,14};
tmp = data[1];
cout << data[2][2] <<endl;
cout << tmp[1] << endl;
cout << ++*(data+2)[0] <<endl;
cout << --tmp++[0] <<endl;
return 0;
}
```
## 第四題
``` c=
#include <iostream>
#include <stdio.h>
#include <stdlib,h>
int main(){
int arr[] ={100,200,300,400,500};
int *ptr = arr+1;
printf("%d/n", *(ptr+1));
printf("%d/n", *(ptr)+1);
printf("%d/n", ptr[2]+1);
printf("%d/n", *(arr+1));
printf("%d/n", arr[3]+1);
return 0;
}
```
## 第五題
``` c=
#include <iostream>
#include <stdio.h>
#include <stdlib,h>
int main(){
char *str[4] ={"Taipai","London","Berlin","Tokyo"};
printf("%d/n", *(*(str+1)));
printf("%d/n", *(str[3]+1)); //感覺怪怪的
printf("%d/n", *(*(str+2))+1); //感覺怪怪的
return 0;
}
```
呈上題,如何印出"Tokyo"字串中的y字元?如何印出"Berlin"的子字串"lin"
## 第六題
在int list[8]中,list[i] = i+3,對於i = 0....7;&(list[6])為0x123456
(A)*(list+5)為:
(B) (list+2)為:
## 第七題
``` c++=
#include<iostream>
void main(){
double * pdata;
double data[3][5] = {{1,3,4,5,10},{7,8,9,10,11},{2,12,6,15,14}};
pdata = data[1];
cout<<data[2][4]<<endl;
cout<<pdata[3]<<endl;
cout<<*(data+1)[1]+3<<endl;
cout<<pdata--[0]<<endl;
}
```
## 第八題
``` java=
char *arr = (char*) malloc (6*sizeof(char));
/* the address of the first char in the array is 0x3000*/
/* arr:[0x3000] --> ['A']['I']['U']['E']['O']['\0']*/
(NOTE that the space of each character is 2byte.)
```
(a)arr+5=?
(b)*(arr+4)=?
(c)arr[2]=?
(d)&arr[2]=?
(e)(*arr)+1=?
