我正在使用C,但我认为这是一个更低级别的问题,不是语言特定的.
程序如何使用array [0]或array [6]正确地获取正确的数据,而不管它包含什么类型的数据?它是在内部存储长度还是有某种分隔符来查找?
#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!
为什么这是输出?任何人都可以解释其中的不同格式说明符吗?
如果p是指针(比如说int * p),那[p]意味着什么?还有什么4[p]意思?(即将标量乘以[p])
假设xyz是程序中定义的某种数据类型.然后是什么
void (*xyz)(void);
Run Code Online (Sandbox Code Playgroud)
声明的意思?
最近看到了以下大块代码:
int main()
{
int a = 3;
0[&a] = a+a;//What is this???
}
Run Code Online (Sandbox Code Playgroud)
谁有人解释一下,这意味着什么?
我正在使用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/C++中以下四个术语之间的区别:
P [I]
I [P]
*(P + I)
*(I + P)
其中p是Array,i是循环当前索引.
我试图理解为什么下面的代码产生的输出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) 在研究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]这对我来说仍然很奇怪.
我可以问一下这个历史吗?为什么会如此以及如何允许这样做呢?
在最近的考试中询问了这个问题,候选人必须找到以下代码的输出:
#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)或是否有其他事情发生?此外,是否有任何文档或任何文章可以解释这种行为?
什么之间的区别int main(int argc, char* argv[])和int main(int argc, char** argv)
我看不出有什么差别。
而且,哪个更好用?