gpt4 book ai didi

c++ - 如何在数组中使用指针?

转载 作者:行者123 更新时间:2023-12-02 09:55:26 24 4
gpt4 key购买 nike

因此,目前我仍然对使用指针和引用感到困惑,并且我不知道自己在做什么。我的程序是一个计算器,可以存储用户输入的所有内容。有一个选项可以询问用户是否要查看历史记录,是否需要历史记录,程序将显示他/她输入的所有数据。我需要在程序中使用指针和引用,但是我仍然对如何使用指针和数组引用感到困惑
这是我的初始化:

int main() {
int size = 1, fNum[size], sNum[size];
char oprtn[size], answer;
;
float result[size];
int *ptrf = &fNum[size];
int *ptrs = &sNum[size];
char *ptro = &oprtn[size];
float *ptrRes = &result[size];
while (true) {
cout << "=====CALCULATOR=====\n\n";
cout << "ENTER TWO NUMBERS:" << endl;
while (!(cin >> *ptrf >> *ptrs)) {
system("cls");
cout << "INVALID INPUT. PLEASE ENTER TWO NUMBERS:\n";
cin.clear();
cin.ignore(2);
}
cout << endl;
do {
cout << "Choose Operation to be Used: \n"
<< " + --- Addition \n"
<< " - --- Subtraction \n"
<< " * --- Multiplication \n"
<< " / --- Division \n"
<< " % --- Remainder \n";
cout << "Answer: ";
cin >> answer;
cout << endl;
switch (answer) {
case '+':
cout << "ADDITION\n";
break;
case '-':
cout << "SUBTRACTION\n";
break;
case '*':
cout << "MULTIPLICATION\n";
break;
case '/':
cout << "DIVISION\n";
break;
case '%':
cout << "REMAINDER\n";
break;
default:
answer = false;
system("cls");
cout << "PLEASE ENTER A VALID ANSWER. CHOOSE BELOW.\n\n";
cout << "FIRST NUMBER: " << *ptrf << endl;
cout << "SECOND NUMBER: " << *ptrs;
cout << endl << endl;
continue;
}
} while (!answer);
cout << "DO YOU WANT TO TRY AGAIN? (Y / N): ";
cin >> answer;
switch (answer) {
case 'Y':
case 'y':
system("cls");
continue;
default:
cout << "VIEW HISTORY? (Y / N): ";
cin >> answer;
switch (answer) {
case 'Y':
case 'y':
cout << "HISTORY\n\n";
break;
default:
return 0;
}
}
}
}

最佳答案

这不是有效的C++代码:

  int size = 1, fNum[size], sNum[size];   // wrong: C++ forbids Variable Length Arrays (1)
char oprtn[size], answer; // ditto...
;
float result[size]; // ditto...
int *ptrf = &fNum[size]; // wrong: this syntax makes ptrf points one past end of array (2)
int *ptrs = &sNum[size]; // ditto...
char *ptro = &oprtn[size]; // ditto...

(1):VLA是C语言的概念。一些编译器(gcc和CLang)允许它作为扩展,但是由于标准库中的容器,它在C++中没有用。

(2):初始化指向数组开头的指针的惯用方式只是 int *ptrf = Num;当用作右值(简写为=符号的右侧)时,数组会衰减为指向其第一个元素的指针。因此它读取 (int *) ptr = &(fNum[0]);: ptr是指向 int的指针,其初始值是数组 fNum的第一个元素的地址

关于c++ - 如何在数组中使用指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60525791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com