指针算法符号

Pointers arithmetic notation

本文关键字:符号 算法 指针      更新时间:2023-10-16

我当前正在尝试弄清为什么我的程序输出奇怪的字符。我希望它输出我为数组中选择的字符,该数组已在代码上显示。不过,我不想使用括号符号。我只使用指针算术符号,这使我感到困惑。

有人知道如何解决这个问题吗?非常感谢您,感谢您的任何帮助

#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;

}

用于内置逗号运算符,*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

您的指针符号很好。问题是您的数组未初始化。

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

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