C++ 指向数组c++;

C++ 指向数组c++;,c++,C++,我对将数组分配给指针的理解是,指针指向数组的第一个索引,因此在打印指针时,它应该打印出数组的第一个索引的地址,但在这种情况下,如何打印出整个数组的值?尽管我明确表示我想要第一个索引的地址 char foo[] = {'A','B','C','\0'}; char* p = foo; char* q = &(foo[0]); cout <<"from p: " << p << endl; cout << "from q: " <<

我对将数组分配给指针的理解是,指针指向数组的第一个索引,因此在打印指针时,它应该打印出数组的第一个索引的地址,但在这种情况下,如何打印出整个数组的值?尽管我明确表示我想要第一个索引的地址

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
charfoo[]={'A'、'B'、'C'、'\0'};
char*p=foo;
char*q=&(foo[0]);

CUT< P> <代码>谢谢,如果我把Foo改为Foo= {‘a’,‘b’,’c}},如果没有null终止符,它应该被当作char数组而不是C字符串右派?@ Calthuu:不,因为内容不影响类型。所以C++中没有实际的char数组,所有都将被当作C字符串处理吗?Thanks@ClintHui:
foo
实际上是一个
char
数组(它的类型是
char[4]
);但在几乎所有情况下,它都会衰减为
&foo[0]
,即
char*
。谢谢,有没有办法显式打印出一个地址?谢谢,因为
 char* bar1[4];
 char (*bar2)[4] = &foo;
 cout << "address of foo is  " << bar2  << endl;
 //output
 address of foo is  0x7fff192f88b0
cout << static_cast<const void *>(bar2) << endl;