指针算术符号
Pointers arithmetic notation
我目前正在尝试弄清楚为什么我的程序会输出奇怪的字符。我希望它输出我为数组选择的字符,我已经在代码中显示了这些字符。不过,我不想使用括号表示法。我只使用指针算术符号,这让我感到困惑。
有谁知道如何解决这个问题?非常感谢,感谢您的帮助
#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;
}
对于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'};
你的指针表示法很好。问题是你的数组没有初始化。
*arr = 'A', 'K', 'U', 'E', 'B', 'Z', 'D', 'O', 'M', 'Q';
先把'A'
赋值给*arr
,然后求值扔掉'K'
,然后求值扔掉'U'
,等等'你的编译器不会为此发出警告吗?
您的数组中的元素 1 到 9 从未被赋值。
我目前正在尝试弄清楚为什么我的程序会输出奇怪的字符。我希望它输出我为数组选择的字符,我已经在代码中显示了这些字符。不过,我不想使用括号表示法。我只使用指针算术符号,这让我感到困惑。
有谁知道如何解决这个问题?非常感谢,感谢您的帮助
#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;
}
对于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'};
你的指针表示法很好。问题是你的数组没有初始化。
*arr = 'A', 'K', 'U', 'E', 'B', 'Z', 'D', 'O', 'M', 'Q';
先把'A'
赋值给*arr
,然后求值扔掉'K'
,然后求值扔掉'U'
,等等'你的编译器不会为此发出警告吗?
您的数组中的元素 1 到 9 从未被赋值。