2016-06-30 3 views
-6
#include <iostream> 

using namespace std; 

const int MAX = 4; 

int main() 
{ 

    char *names[MAX] = { 
     "Zara Ali", 
     "Hina Ali", 
     "Nuha Ali", 
     "Sara Ali", 
    }; 

    char *ptr[MAX]; 

    for (int i = 0; i < MAX; i++) 
    { 
     ptr[i] = &names[i]; 
    } 

    for (int i = 0; i < MAX; i++) 
    { 
     cout << "Value of names[" << i << "] = "; 
     cout << *ptr[i] << endl; 
    } 

    return 0; 
} 
+0

あなたは問題を修正しようとするために何をしましたですので? SOにコードをコピー/ペーストするだけでなく、 –

+0

コンパイラが指し示している行を確認し、何か怪しいものがあるかどうか確認しましたか? – Lundin

答えて

4

の 'CHAR *' から 'char型**' 変換することはできません。

ptr[i] = &names[i]; // `&names[i];`is pointer to char* 

ptr[i] = names[i]; 

に他の事は、あなたがすべきことですリテラルを const char*とし、 char*としないように変更してください。

char *ptr[MAX]; 
char *names[MAX] = { 

へ:

const char *ptr[MAX]; 
const char *names[MAX] = { 

あなたのコンパイラエラー/警告に上記読むことができるので、私はあなたがこのような場合には、それらを読む方法を学ぶお勧め:

prog.cc:23:13: error: assigning to 'char *' from incompatible type 'char **'; remove & 
    ptr[i] = &names[i]; 
      ^~~~~~~~~~ 

コンパイラはあなたの情報を提供します正確に割り当てが配置されている場所、正確な情報を提供します:remove &。この出力は、最高のエラーメッセージの1つと考えられるclangのものです。

1

マルチンが言っ

ptr[i] = names[i]; 

名[i]は、実際のポインタであるためです。最後に

cout << ptr[i] << endl; 

を印刷するためにPTR [i]はまた、ポインタ

関連する問題