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;