据我所知,在某些情况下,数组被转换为指向其第一个元素的指针:
int a[5];
int * p;
p = a;
Run Code Online (Sandbox Code Playgroud)
按照这种方法并考虑到我可以为指针分配一个数组,为什么我不能将二维数组分配给指针指针?
int a[5][5];
int ** q;
q = a;
Run Code Online (Sandbox Code Playgroud)
但是,我可以为指针指针指定一个指针数组:
int * p[5];
int ** q;
q = p;
Run Code Online (Sandbox Code Playgroud)
如果数组转换为指向其第一个元素的指针,则在第二个示例中发生q = a时,a应该是指向[0]的指针,而[0]应该是指向[0] [0]的指针, 对?
此外,如果我这样做,我不会收到错误:
cout << **a;
Run Code Online (Sandbox Code Playgroud)
在此先感谢,我希望你能帮助我理解.
我的书说如果我想读一个最大长度为40个字符的字符串,我必须声明一个长度为41的变量,但它没有说明原因.
char name[41];
cin >> name;
cout << name << endl;
Run Code Online (Sandbox Code Playgroud)
我知道这是一个新手问题,我确实是一个C++新手.
我希望你能帮助我.谢谢.
编辑:
感谢您的回答,我没想到在如此短的时间内获得如此多的好消息.
谁负责在char数组的末尾插入NULL终止符?
按Enter后"\n"会发生什么?
再次感谢.