* str []和str [] []之间的区别

时间:2013-08-11 20:44:40

标签: c++

我不明白在这段代码中使用* 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;
}

1 个答案:

答案 0 :(得分:1)

*x表示“取消引用指针x”。现在,只要有一个数组处于语言所需的位置,它就会隐式地衰减到指向第一个元素的指针。

所以

*str[0]='\0';

表示“将'\0'分配给1元素字符数组str[0]的第一个元素,它本身是9个元素数组str”的第一个元素。

完全相同
str[0][0] = '\0';

并且可以说应该是这样写的。或者str应该首先声明为char str[9]