相关疑难解决方法(0)

[]运算符如何工作?

我正在使用C,但我认为这是一个更低级别的问题,不是语言特定的.

程序如何使用array [0]或array [6]正确地获取正确的数据,而不管它包含什么类型的数据?它是在内部存储长度还是有某种分隔符来查找?

c c++ arrays

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

数组输出杂项

#include <stdio.h>
int main()
{
int a=3, b = 6;
printf(&a["Hi!Hello! %s\n"], &b["Mnnit/Softathalon"]);
printf(&a["WHAT%c%c%c %c%c %c !\n"], 1["this"],
2["beauty"],0["tool"],0["is"],3["sensitive"],4["CCCCCC"]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

你好!Softathalon

那是C!

为什么这是输出?任何人都可以解释其中的不同格式说明符吗?

c printf

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

关于指针的问题

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

  1. 如果p是指针(比如说int * p),那[p]意味着什么?还有什么4[p]意思?(即将标量乘以[p])

  2. 假设xyz是程序中定义的某种数据类型.然后是什么

    void (*xyz)(void);
    
    Run Code Online (Sandbox Code Playgroud)

    声明的意思?

c pointers function-pointers void-pointers

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

奇怪的阵列签名

最近看到了以下大块代码:

int main()
{
    int a = 3;
    0[&a] = a+a;//What is this??? 
}
Run Code Online (Sandbox Code Playgroud)

谁有人解释一下,这意味着什么?

c++ arrays reference

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

C中的这个数组程序如何给出结果10?

我正在使用Ubuntu 12.04lts与GCC编译器.这个程序给出了结果10.你有没有人可以描述为什么这个程序会给出这样的结果?

 #include <stdio.h>
 void main(void)
 {
     int arr[1] = {10};
     printf("\n%d\n\n", 0[arr]);
 }
Run Code Online (Sandbox Code Playgroud)

c arrays

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

C/C++中p [i],i [p]和*(p + i),*(i + p)之间的差异

我想知道C/C++中以下四个术语之间的区别:

  1. P [I]

  2. I [P]

  3. *(P + I)

  4. *(I + P)

其中p是Array,i是循环当前索引.

c c++

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

C中的指针输出

我试图理解为什么下面的代码产生的输出7.

int main()
{
    int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    int b[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    int c = 5;
    int *p = a;

    printf("%d", (c[b])[p]);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c arrays pointers

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

为什么(1 + 3)[a]与[1 + 3]相同?

在研究18个基本C++面试问题时,我发现了一个带有以下(奇怪)声明的问题:

std::cout << (1 + 3)[a] - a[0] + (a + 1)[2];
Run Code Online (Sandbox Code Playgroud)

然后答案解释了,(1+3)[a] is the same as a[1+3]这对我来说仍然很奇怪.

我可以问一下这个历史吗?为什么会如此以及如何允许这样做呢?

c++

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

这种访问C-String中字符的方式如何工作?

在最近的考试中询问了这个问题,候选人必须找到以下代码的输出:

#include<stdio.h>
#include<string.h>
int main()
{
    char * c = "GATECSIT2017";
    char *p = c;
    printf("%d", (int)strlen(c+2[p]-6[p]-1));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我开始用C++编写代码,所以我不是C-Strings的专家.在搞乱代码之后,我理解它是如何工作的,但有一点我不清楚,这是从char*字符串访问char的方式.

我的问题是,如何2[p]获得索引2处的角色?它会解决*(p+2)或是否有其他事情发生?此外,是否有任何文档或任何文章可以解释这种行为?

c pointers c-strings char

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

int main(int argc, char* argv[]) 和 int main(int argc, char** argv) 有什么区别

什么之间的区别int main(int argc, char* argv[])int main(int argc, char** argv) 我看不出有什么差别。
而且,哪个更好用?

c program-entry-point arguments

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