2013-08-11 4 views
-1

Я не понимаю использование * str [] в этом коде, это diff от str [] [], используемого в этом коде?Разница между * str [] и str [] []

#include<iostream.h> 
#include<fstream.h> 
#include<conio.h> 

int main() 
{ 
    char a[10], b[10], c, buffer[50], str[1][9], s[10]; 
    //decalaring char a, b, buffer, str[][], s// 
    int y; 

    ofstream out; 
    out.open("output.cpp"); 
    out<<("\nOPCODE\tMACHINE_CODE\n"); 
    do 
    { 
     y = 0; 
     cout<<"ENTER THE OPCODE&MACHINE CODE"; 
     cin>>a>>b; 
     out<<"\n"<<a<<"\t"<<b<<"\t"<<"\n"; 
     cout<<"PRESS 1 TO CONTINUE"; 
     cin>>y; 
    }while(y == 1); 
    out.close(); 
    ifstream in; 
    in.open("output.cpp"); 
    while(in) 
    { 
     c = in.get(); 
     cout<<c; 
    } 
    in.close(); 
    cout<<"ENTER THE OPCODE TO SEARCH"; 
    cin>>s; 
    in.open("output.cpp"); 
    in.getline(buffer,50); 
    while(in) 
    { 
     *str[0] = '\0'; // i dont understand the use of *str[] here, is it diff from str[][]? 
     *str[1] = '\0'; 
     in>>str[0]; 
     in>>str[1]; 
     if(strcmpi(str[0], s) == 0) 
     { 
      cout<<"\n"<<str[0]<<"\t"<<str[1]; 
     } 
    } 
    return 0; 
} 
+0

Как и ваш вопрос. [У меня есть большая путаница, чтобы понять разницу между 'char * var [3]', 'char var [3] [15]'] (http://stackoverflow.com/questions/17979312/i-have-big-confusion -to-understand-the-difference-between-char-var3-char) –

+1

'iostream.h'? Зачем? Мы больше не в 1990 году. –

+0

@ LionKing: Нет, это не так. –

ответ

1

*x означает "разыменования указателя x". Теперь, когда у вас есть массив в позиции, где язык ожидает указатель, он неявно распадается на указатель на первый элемент.

Так

*str[0]='\0'; 

означает «назначить '\0' к первому элементу массива 1-элемента символа str[0], который сам по себе первый элемент массива str 9-элемента».

Это означает, что точно так же, как и

str[0][0] = '\0'; 

и, возможно, должны были быть написаны таким образом. Или str должен был быть объявлен как char str[9].

+0

благодарит вас за ответ, но мне нужно понять эти моменты: 1) в чем преимущество использования * str [0], 2) есть ли какой-либо простой способ, который вы можете предложить, 3) * str [1] = ' \ 0 'означает str [1] [0] =' \ 0 '. –

Смежные вопросы