相关疑难解决方法(0)

用c ++中的字符串索引的整数

可能重复:
在C数组中为什么这是真的?a [5] == 5 [a]

这怎么可能是有效的C++?

void main()
{
  int x = 1["WTF?"];
}
Run Code Online (Sandbox Code Playgroud)

在VC++ 10上,这个编译并在调试模式下x,语句之后的值为84.

这是怎么回事?

c++ string indexing int integer

5
推荐指数
2
解决办法
191
查看次数

字符串作为数组索引

3["XoePhoenix"],数组索引是字符数组的类型.我们可以在C中这样做吗?数组索引必须是整数是不是真的?

什么3["XeoPhoenix"]意思?

c arrays

4
推荐指数
2
解决办法
128
查看次数

我在哪里可以放一个数组下标?

可能重复:
在C数组中为什么这是真的?a [5] == 5 [a]

这个问题问为什么

a[5] == 5[a]
Run Code Online (Sandbox Code Playgroud)

除了一个......

为什么一个允许在一个整数后面放一个数组下标?为什么不允许写一些类似的东西

[a]5
Run Code Online (Sandbox Code Playgroud)

要么

[5]a
Run Code Online (Sandbox Code Playgroud)

或者放在[]其他一些奇怪的地方?

换句话说,允许数组索引运算符的定义是什么?

编辑I: 我收到的引用标准的答案起初有点难以理解.但在我现在明白的响应者的帮助下.指针或整数后允许使用数组下标(方括号).如果它跟在指针之后,括号内的内容必须是整数.如果它跟一个整数,括号内的内容必须是一个指针.

我接受了那个不太热烈的回答,因为他让我理解标准中的引用更多的手握.但严格引用标准的答案也是正确的.起初只是难以理解.

编辑II: 我认为我的问题不重复.我的问题是关于数组下标运算符的允许语法.它被标准中的引用所回答,这些引用从未出现在我认为重复的问题中.它是相似的,是的,但不是重复的.

c

4
推荐指数
2
解决办法
394
查看次数

不可能的C++数组索引

可能重复:
在C数组中为什么这是真的?a [5] == 5 [a]
通过C和C++中的索引[array]访问数组

我刚刚发现了我的代码中似乎是一个错误,但不仅仅是编译,它最初也能正常工作......

考虑以下代码snipet:

#include <string>
#include <iostream>
using namespace std;

class WeirdTest
{
public:
    int value;
    string text;
    WeirdTest() : value(0),
                  text("")
    {}
    virtual ~WeirdTest()
    {}
    void doWeirdTest()
    {
        value = 5;
        string name[] =
        {
            "Zero",
            "One",
            "Two",
            "Three",
            "Four",
            "Five"
        };
        text = value[name];
        cout << "text: " << text << endl;
    }
};
int main(int argc, char** argv)
{
    WeirdTest test;
    test.doWeirdTest();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

而不是text=value[name];它应该是,text=name[value];但编译器不会抱怨,并且得到的二进制代码完全相同,无论"bug"是否在这里.我正在使用g ++ …

c++ arrays indexing g++

4
推荐指数
1
解决办法
193
查看次数

a [10]和10 [a]之间的差异

以下代码

a[10] == 10[a]

结果似乎true用C语言

C编译器如何将它们视为相同?

c arrays

4
推荐指数
1
解决办法
263
查看次数

C++对数组下标有什么期望?

在C中,阵列订阅:a[b]仅仅是还原糖等效指针运算之后解除引用的句法:*(a+b)(如所解释的,比方说,在这里).

对于基类型,如何在C++中解释数组订阅?(不适用于我们有超载语义的类)?而且,更具体地说,C++期望作为下标出现什么类型?是一个ptrdiff_t吗?

c++ arrays standards pointers subscript-operator

4
推荐指数
2
解决办法
1618
查看次数

数组变量在哪里用C语言存储?

#include <stdio.h>

int main(){
    int array[] = {1,2,3};
    printf("L00: array[0]=%d \n",array[0]);
    printf("L01: array[1]=%d \n",array[1]);
    printf("L02: array[2]=%d \n",array[2]);
    printf("L03: &array[0]=%p \n",&array[0]);
    printf("L04: &array[1]=%p \n",&array[1]);
    printf("L05: &array[2]=%p \n",&array[2]);
    printf("L06: array=%p \n",array);
    printf("L07: &array=%p \n",&array);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在这个程序中,L03,L06,L07和显示(&array,array,和&array[0],分别地)相同的存储器地址.

所以我很好奇"阵列"作为RAM中变量的位置.

如果RAM中没有"数组"的位置,它在哪里?

c arrays pointers

4
推荐指数
4
解决办法
217
查看次数

谁能解释一下这个特定的print语句在for循环中做了什么?

int a[] = { 1, 2, 3, 4, 5 };
const int N = sizeof(a)/sizeof(a[0]);
cout<<N<<endl;

for (int i = 0; i < N; ++i)
{
    cout << (i[a-i]%N)[a+i-1] << " ";
}
Run Code Online (Sandbox Code Playgroud)

//它打印1 2 3 4 5,即我不理解的数组是cout <<(i [ai]%N)[a + i-1] <<"";

c++ arrays

3
推荐指数
1
解决办法
201
查看次数

一元和数字文字的语义

什么是一元 - 并在这里做?

int * a = 1990; 
int result = &5[a]; 
Run Code Online (Sandbox Code Playgroud)

如果您要打印,result您将获得2010年的价值.

您必须使用-fpermissive它编译它,否则它将因错误而停止.

c c++ pointers

3
推荐指数
2
解决办法
154
查看次数

我如何["字符串"]作为条件陈述?

检查IOCCC中的这个混淆代码.我试图理解这一点.

int i;main(){for(;i["]<i;++i){--i;}"];read('-'-'-',i+++"hell\
o, world!\n",'/'/'/'));}read(j,i,p){write(j/p+p,i---j,i/i);}
Run Code Online (Sandbox Code Playgroud)

手段:

int i;
main()
{
    for(;i["]<i;++i){--i;}"];read('-'-'-',i+++"hello, world!\n",'/'/'/'));
}
read(j,i,p)
{
    write(j/p+p,i---j,i/i);
}
Run Code Online (Sandbox Code Playgroud)

请解释一下: i["]<i;++i){--i;}"]

这如何作为一个条件陈述?

c obfuscation for-loop conditional-statements

3
推荐指数
1
解决办法
91
查看次数