submitHandler:
$("#myform").on('submit', function () {
alert("have just pressed submit");
if ($("#myform").valid()) {
alert("here some code inside $.AJAX({})");
}
return false;
})
此语句如何生成输出printf("%c",3["abcde"]);
?编译器如何执行此语句?我理解为d
= a[5]
的{{1}} = 5[a]
的int数组。但是这里的字符串充当除字符串名称(变量名称)之外的索引。
答案 0 :(得分:6)
在你的情况下
printf("%c",3["abcde"]);
可以读作
printf("%c","abcde"[3]);
或者,作为我们最熟悉的语法,
char p [] = "abcde";
printf("%c",p[3]);
它基本上归结为访问数组索引3中的元素(C使用基于0的数组索引)。
这只是数组索引的语法糖。你可以用任何你喜欢的方式。
如果您想挖掘更多信息以便更好地理解,可以查看this question and related answers。
注意:正在挑剔
您的代码段是语句,请勿将其称为程序。
答案 1 :(得分:5)
数组访问器运算符[]可以使用"两种方式",因此3["abcde"]
等同于"abcde"[3]
,索引3(0为开头)包含d。
编辑:
我们有一个字符串常量而不是变量这一事实并不重要。字符串常量存储在内存的只读部分中,隐式输入为const char *
。所以以下内容相当于您发布的内容:
const char *str = "abcde";
printf("%c",3[str]);
答案 2 :(得分:4)
3["abcde"]
相当于*(3 + "abcde")
,因此"abcde"[3]
当在表达式中使用时,除了一些例外,"abcde"
将被转换为指向其第一个元素的指针,即它基本上给出了字符串"abcde"
的基址。
将基地址添加到3
将给出字符串"abcde"
的4 th 元素的地址,因此3["abcde"]
将给出4 th < / sup> element。
答案 3 :(得分:0)
让我们打破这个:
printf("%c",3["abcde"]);
printf
以特定格式打印数据。
格式为%c
,因此输出将是单个字符。
正在打印的字符为3["abcde"]
。 "abcde"
是一个字符数组,正在访问的是第四个字母。这是因为数组从0开始。在这种情况下,'a'是字符0,'b'是字符1,直到'e'是4。
要访问“b”,它将是1["abcde"]
。
注意:3["abcde"]
与撰写"abcde"[3]
相同,并且在两种情况下都等于字符'd'