3
我对将数组赋给指针的理解是指针指向数组的第一个索引,所以当打印出指针时,它应该打印出数组的第一个索引的地址,但是如何在这种情况下打印出整个数组的值呢?尽管我明确表示,我想要的第一索引指向数组C++的指针
char foo[] = {'A','B','C','\0'};
char* p = foo;
char* q = &(foo[0]);
cout <<"from p: " << p << endl;
cout << "from q: " << q << " " << &(foo[0]) << endl;
//output
from p: ABC
from q: ABC ABC
的地址的第二个问题是,我看到这两条线之间的区别在于,一个是指针的阵列为char,另一种是一个指针到一个char数组,是否正确?括号是否必要?
char* bar1[4];
char (*bar2)[4] = &foo;
cout << "address of foo is " << bar2 << endl;
//output
address of foo is 0x7fff192f88b0
foo的数组的地址应该是相同的为甲地址,是吗?我如何打印A的地址?因为我没有这样做。非常感谢
谢谢,如果我把*** foo ***改成*** foo = {'A','B','C'} ***没有空终止符,它应该被视为一个字符数组而不是C字符串? –
@ClintHui:不,因为内容不会影响类型。 –
所以在C++中没有实际的char数组,所有都将被视为C-String?谢谢 –