-1

このコードでの *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;
}
4

1 に答える 1

1

*x「ポインタの逆参照」を意味しますx。さて、言語がポインタを予期する位置に配列があるときはいつでも、最初の要素へのポインタに暗黙的に減衰します。

そう

*str[0]='\0';

は、「それ自体が 9 要素配列の'\0'最初の要素である、1 要素文字配列の最初の要素に割り当てる」ことを意味します。str[0]str

と全く同じ意味です

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

間違いなくそのように書かれているはずです。または、そもそもstr宣言されている必要があります。char str[9]

于 2013-08-11T20:56:55.397 に答える