c++指针问题 char型数组

2025-02-22 22:05:02
推荐回答(3个)
回答1:

举个例子:
main()
{
int arr[3] = {1,2,3};
int *ip;
ip = arr;
cout< ip = &arr[0];
cout<}
这个问题是这样的:(void*)ch 相当于例子中的ip = arr;
而(void*)ch[0]便无对应。
你应该写成(void*)&ch[0],这样对应于例子中的ip = &arr[0];
这样取到的地址都为第一个字符的地址。

你的程序中cout<<(void*)ch[0];
ch[0]的值是1;
你用(void*)ch[0]其实是取的字符'1'在内存中的地址。
相当于 cout<<(void*)'1';

不知道是否解答了你的问题

回答2:

这是C++中<<对字符串的特殊处理,如果是某个字符串的首地址(数组名就是字符串的首地址),<<就输出整个字符串的内容。

回答3:

调试显示:
第二个输出语句输出的是 00000031,即第一个元素字符‘1’的 ascii值 16进制表示。