【问题标题】:Char 2D Array treats characters separatelyChar 2D Array 分别处理字符
【发布时间】:2017-03-14 14:32:23
【问题描述】:

我能从 char 表中取出整数吗?例如:

char *table[]={"A","123","2"};

我想显示数字 123,但每当我打电话时

cout<<*table[1];

我明白了

1

我能解决这个问题吗?

【问题讨论】:

  • 你试过table[1]吗?
  • 它有效,为什么?它与 *table[1] 有何不同?
  • 而我需要对*table[]进行操作,因为main函数有这样的参数。我试图将它放在另一张桌子上,但它说类型不匹配
  • table[1] 是字符字符串。 *table[1] 只是第一个字符。
  • 所以我可以转换这个字符 *table[] = { argv[0],"K","13","","12", " +", "1"}; , 进入 char table[]={....}; ?

标签: c++ multidimensional-array char


【解决方案1】:

如果您查看operator precedence table for C++,您会发现数组下标[] 的优先级高于指针取消引用*。那么,这就是正在发生的事情。

table 是一个指针数组。数组中的指针指向字符串的第一个字符。字符串中的下一个字符就是内存中的下一个字符。字符串的结尾是第一个值为(作为整数)0 的字符,称为空终止符。

当您访问table[1] 时,您会获得数组中索引为 1 的元素,它是一个指向 char 的指针,它表示一个字符串。当您访问*table[1] 时,您会获得数组中索引为 1 的元素,一个指向 char 的指针,然后取消引用该指针,以获取它指向的 char。

【讨论】:

    【解决方案2】:

    在编写 char *table[]={"A","123","2"} 时,您声明了一个 char 指针数组。从某种意义上说,这是一个二维数组,您可以使用以下命令打印“123”:

    for( unsigned i=0; table[j][i]!='\0'; ++i )    //given j = 1                        
    {                                            
        cout << table[j][i];
    }
    

    输出:

    123
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      • 2017-12-23
      • 2018-04-29
      • 2015-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多