整数数组和带指针的字符数组 我很希望C++中有关指针的帮助。请看下面的代码: int array[3]={4,7,2}; int * a; a = array; char Carray[3]={'p','k','\0'}; char * c; c = Carray; cout << a << "\n"; cout << c << "\n";

整数数组和带指针的字符数组 我很希望C++中有关指针的帮助。请看下面的代码: int array[3]={4,7,2}; int * a; a = array; char Carray[3]={'p','k','\0'}; char * c; c = Carray; cout << a << "\n"; cout << c << "\n";,c++,arrays,pointers,C++,Arrays,Pointers,打印a会按预期返回数组第一个元素的地址,即4 但是打印c应该给出Carray的第一个元素的地址,即p,但是在本例中,它给出了整个字符串,即pk。我们这里没有使用值运算符 如果有人能向我解释这一点,那将非常感谢,因为std::cout将char*视为C样式的字符串。如果您需要地址,可以尝试: std::cout << (void *) c; 您应该指定在打印输出期间应如何处理变量。在使用streams时,这不是很明显,因此我建议从简单的事情开始,即printf: 看看你们得到了什么样

打印a会按预期返回数组第一个元素的地址,即4

但是打印c应该给出Carray的第一个元素的地址,即p,但是在本例中,它给出了整个字符串,即pk。我们这里没有使用值运算符

如果有人能向我解释这一点,那将非常感谢,因为std::cout将char*视为C样式的字符串。如果您需要地址,可以尝试:

std::cout << (void *) c;

您应该指定在打印输出期间应如何处理变量。在使用streams时,这不是很明显,因此我建议从简单的事情开始,即printf:

看看你们得到了什么样的输出。

它把c打印成以空结尾的字符串,而不是地址
printf( "%d\n", *a );
printf( "%d\n", a );
printf( "%c\n", *c );
printf( "%s\n", c );