【问题标题】:Variable name with using pointer使用指针的变量名
【发布时间】:2019-04-03 18:27:34
【问题描述】:

我想从键盘中选择我想显示的数组(我知道我的代码不起作用我只想显示我的问题)

 int main(){
            char *a = new char[5];
            char *b = new char[5];
            char name;

            cin >> a;
            cin >> b;
            cin >> name;

            cout << name; 
}

【问题讨论】:

  • if (name == 'a') cout &lt;&lt; a; else cout &lt;&lt; b;
  • 我将拥有来自 a-z 的 char 数组是否有其他方法可以使用指针或其他方法来做到这一点:/
  • 将来您可能会收到更好的反馈,告诉我们您尝试过的更多内容以及具体失败的原因:)
  • 使用std::map
  • 我无法使用 stl

标签: c++ pointers variable-names


【解决方案1】:

一旦程序运行,您在代码中使用的变量名称就没有任何意义。如果您想这样做,您不能用ab 动态替换name

让例子更简单(c风格的数组绝对不适合初学者,看std::vector代替),你可以这样做:

#include <iostream>
int main() {
    int a = 42;
    int b = 102;
    std::cout << "select a or b: ";
    char select;
    std::cin >> select;
    if (select == 'a') std::cout << a;
    else if (select == 'b') std::cout << b;
    else std::cout << "wrong input \n";
}

【讨论】:

    【解决方案2】:

    大多数时候,如果您想拥有多个相同类型的对象(例如,超过 2 个或 3 个),您应该考虑使用数组或向量。

    所以不是

    char *a = ...;
    char *b = ...;
    char *c = ...;
    

    使用

    char *values[] = { ... };
    

    现在您可以使用索引访问值,即整数值。对于字符 a-z,这可以通过减去值 'a' 轻松完成('a'-'a' 为 0,'b'-'a' 为 1,等等)。

    const char *values[] = { "this is a", "this is b" };
    
    char name;
    std::cin >> name;
    int index = name - 'a';
    
    // TODO: Make sure the index is in range!
    const char *value = values[index];
    std::cout << value;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 2014-04-21
      • 2016-05-03
      • 1970-01-01
      相关资源
      最近更新 更多