我不明白在这段代码中使用* 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 :(得分:1)
*x
表示“取消引用指针x
”。现在,只要有一个数组处于语言所需的位置,它就会隐式地衰减到指向第一个元素的指针。
所以
*str[0]='\0';
表示“将'\0'
分配给1元素字符数组str[0]
的第一个元素,它本身是9个元素数组str
”的第一个元素。
与
完全相同str[0][0] = '\0';
并且可以说应该是这样写的。或者str
应该首先声明为char str[9]
。