[問題] c++雙重指標
我們助教出了一道題:
請宣告一個字串指標陣列str_ptr_array[7]、一個二維的字串陣列str_array[7][5]
,兩者的初始值皆為"Mon", "Tue", "Web", "Thu", "Frid", "Sat", "Sun",以及
一個指向二維字串陣列的雙重指標(指標的指標)ptr。
請運用ptr將二維的字串陣列的內容值印出。
紅字部份很奇怪,str_array本身就是個雙重指標,那如何再指呢?
通常要印出就*(*(str_array+m)+n)就好了不是嗎?
他到底想叫我們幹嘛?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.169.199.219
→
06/02 19:18, , 1F
06/02 19:18, 1F
→
06/02 19:31, , 2F
06/02 19:31, 2F
推
06/02 19:37, , 3F
06/02 19:37, 3F
不然你覺得要怎麼寫?
char *ptr=str_array? 無法編譯
char **ptr=str_array? 無法編譯
char *ptr=&str_array? 無法編譯
char **ptr=&str_array?無法編譯
→
06/02 19:40, , 4F
06/02 19:40, 4F
→
06/02 19:41, , 5F
06/02 19:41, 5F
→
06/02 19:46, , 6F
06/02 19:46, 6F
書上有寫他是雙重指標常數 ...
→
06/02 20:34, , 7F
06/02 20:34, 7F
※ 編輯: d062637776 來自: 218.169.199.219 (06/02 20:54)
→
06/02 20:56, , 8F
06/02 20:56, 8F
→
06/02 20:58, , 9F
06/02 20:58, 9F
→
06/02 21:00, , 10F
06/02 21:00, 10F
→
06/02 21:02, , 11F
06/02 21:02, 11F
→
06/02 21:31, , 12F
06/02 21:31, 12F
→
06/02 21:31, , 13F
06/02 21:31, 13F
推
06/02 21:40, , 14F
06/02 21:40, 14F
→
06/02 21:43, , 15F
06/02 21:43, 15F
→
06/02 21:48, , 16F
06/02 21:48, 16F
→
06/02 21:52, , 17F
06/02 21:52, 17F
→
06/02 22:00, , 18F
06/02 22:00, 18F
→
06/02 22:05, , 19F
06/02 22:05, 19F
→
06/02 22:05, , 20F
06/02 22:05, 20F
→
06/02 22:06, , 21F
06/02 22:06, 21F
推
06/02 22:07, , 22F
06/02 22:07, 22F
→
06/02 22:09, , 23F
06/02 22:09, 23F
→
06/02 22:09, , 24F
06/02 22:09, 24F
→
06/02 22:10, , 25F
06/02 22:10, 25F
→
06/02 22:11, , 26F
06/02 22:11, 26F
→
06/02 22:13, , 27F
06/02 22:13, 27F
→
06/02 22:13, , 28F
06/02 22:13, 28F
推
06/02 22:17, , 29F
06/02 22:17, 29F
m,n是正整數
→
06/02 22:18, , 30F
06/02 22:18, 30F
→
06/02 22:20, , 31F
06/02 22:20, 31F
→
06/02 22:20, , 32F
06/02 22:20, 32F
→
06/02 22:50, , 33F
06/02 22:50, 33F
推
06/02 23:24, , 34F
06/02 23:24, 34F
我把助教的題目完整放上來好了
請宣告一個字串指標陣列str_ptr_array[7]、一個二維的字串陣列str_array[7][5]
,兩者的初始值皆為"Mon", "Tue", "Web", "Thu", "Frid", "Sat", "Sun",以及一個指
向二維字串陣列的雙重指標(指標的指標)ptr。
1. 請運用ptr將二維的字串陣列的內容值印出。
2. 請將字串指標陣列的內容值印出。
所以他是要同時把兩種都求出內容
如果不用ptr的話 如果要求用指標方式輸出正常我就這樣寫:
#include <iostream>
#include <cstdlib>
#define x "Mon","Tue","Web","Thu","Frid","Sat","Sun"
using namespace std;
int main(void)
{
char *str_ptr_array[7]={x},str_array[7][5]={x};
for(int i=0;i<=6;i++)
{
cout<<"str_ptr_array["<<i<<"]="<<str_ptr_array[i]<<endl;
cout<<"str_array["<<i<<"]="<<*(str_array+i)<<endl;
}
system ("pause");
return 0;
}
如果用ptr紅字部分我就不知如何下手
※ 編輯: d062637776 來自: 218.169.199.219 (06/02 23:46)
→
06/02 23:37, , 35F
06/02 23:37, 35F
→
06/02 23:38, , 36F
06/02 23:38, 36F
→
06/02 23:41, , 37F
06/02 23:41, 37F
→
06/03 00:23, , 38F
06/03 00:23, 38F
→
06/03 00:23, , 39F
06/03 00:23, 39F
→
06/03 00:29, , 40F
06/03 00:29, 40F
→
06/03 00:32, , 41F
06/03 00:32, 41F
→
06/03 00:33, , 42F
06/03 00:33, 42F
→
06/03 00:33, , 43F
06/03 00:33, 43F
→
06/03 00:34, , 44F
06/03 00:34, 44F
→
06/03 00:34, , 45F
06/03 00:34, 45F
→
06/03 00:36, , 46F
06/03 00:36, 46F
→
06/03 10:13, , 47F
06/03 10:13, 47F
→
06/03 15:30, , 48F
06/03 15:30, 48F
→
06/03 15:31, , 49F
06/03 15:31, 49F
→
06/03 15:31, , 50F
06/03 15:31, 50F
→
06/03 15:59, , 51F
06/03 15:59, 51F
→
06/03 18:19, , 52F
06/03 18:19, 52F
→
06/03 18:21, , 53F
06/03 18:21, 53F
→
06/03 18:21, , 54F
06/03 18:21, 54F
根據我的研究 這才是助教要的答案...
#include <iostream>
#include <cstdlib>
#define x "Mon","Tue","Web","Thu","Frid","Sat","Sun"
using namespace std;
int main(void)
{
int k=0;
char *str_ptr_array[7]={x},str_array[7][5]={x};
char *p=str_array[0],**ptr=&p;
for(int i=0;i<=6;i++)
cout<<"str_ptr_array["<<i<<"]="<<str_ptr_array[i]<<endl;
for(int j=0;j<=30;j=j+5)
cout<<"str_array["<<k++<<"]="<<*ptr+j<<endl;
system ("pause");
return 0;
}
紅字是重點
※ 編輯: d062637776 來自: 61.223.248.39 (06/03 21:47)
推
06/03 21:59, , 55F
06/03 21:59, 55F