指针算术符号

时间:2017-09-24 02:51:09

标签: c++ pointers iostream

我目前正试图找出为什么我的程序会输出奇怪的字符。我希望它输出我为数组选择的字符,我在代码中显示了这些字符。不过,我不想使用括号表示法。我只使用指针算术符号,这让我感到困惑。

有谁知道如何解决这个问题?非常感谢,我感谢任何帮助

#include <iostream>
using namespace std;


int main(){


char *arr = new char[10];
*arr = 'A', 'K', 'U', 'E', 'B', 'Z', 'D', 'O', 'M', 'Q';

// Show arr;
for(int i = 0; i < 10; i++){
cout << *(arr +i) << endl;
}


delete[] arr;


}

2 个答案:

答案 0 :(得分:0)

对于built-in comma operator*arr = 'A', 'K', 'U', 'E', 'B', 'Z', 'D', 'O', 'M', 'Q';将被解释为(*arr = 'A'), ('K'), ('U'), ...;;所以它只将数组的第一个元素赋给'A',其他元素根本没有初始化。

如果要初始化所有元素,可以

char *arr = new char[10] {'A', 'K', 'U', 'E', 'B', 'Z', 'D', 'O', 'M', 'Q'};

LIVE

答案 1 :(得分:0)

你的指针表示法很好。问题是你的阵列没有初始化。

*arr = 'A', 'K', 'U', 'E', 'B', 'Z', 'D', 'O', 'M', 'Q';首先将'A'分配给*arr,然后评估并抛弃'K',然后评估并抛弃'U'等等。你的编译器会为此发出警告吗?

数组的元素1到9永远不会给出值。