#include<stdio.h>
void main()
{
int s[12] = { 1,2,3,4,4,3,2,1,1,1,2,3 }, c[5] = { 0 }, i;
for (i = 0; i < 12; i++)
c[s[i]]++;
for (i = 1; i < 5; i++)
printf("%d ", c[i]);
printf("\n");
}
结果是 4 3 3 2(自己分析完之后才会发现这道题是多么的简单)
s[i] 作为数组 c 的下标,
c [ s [ 1 ] ] = c [ s [ 2 ] ] = c [ s [ 3 ] ] = c [ s [ 4 ] ] = 0。
经过自增之后,c [ s [ 1 ] ] = c [ s [ 2 ] ] = c [ s [ 3 ] ] = c [ s [ 4 ] ] = 1;
而后
c [ s [ 4 ] ] =c [ s [ 3 ] ] =c [ s [ 2 ] ] =c [ s [ 1 ] ] = 2。
再然后 c [ s [ 1 ] ] 经过两次自增,而c [ s [ 2 ] ] 和 c [ s [ 3 ] ]再 经过一次自增 。最终c [ s [ 1 ] ] 就等于 4。c [ s [ 2 ] ] 和 c [ s [ 3 ] ] 就都等于 3 。而c [ s [ 4 ] ] =2。
———————————————————————————————————————————
char* str, name[1]; str="hello"
这样定义字符串不会出现编译错误,因为字符指针变量可以直接使用字符串赋值,而字符数组不能直接使用字符串或字符数组赋值。(具体我也不太懂,以后会回来补充)
(数组这一章的题)