A:多维数组初始化,如

test[2][3][4]=...{
...{
...{000,001,002,003}
...{010,011,012,013}
...{020,021,022,023}
}
...{
...{100,101,102,103}
...{110,111,112,113}
...{120,121,122,123}
}
}
这种初始化风格结构清晰,给人的感觉是数组元素的对应位置准确,如果需要对数组中某几个元素赋值时,这种结构就会显得很合理了。同时最重要的是它的可读性很强,便于维护。其中的花括号起到一种定界的作用。
B:看这两个表达式:
test[i]
*(test+i)
指针比引用数组下标的效率可能要高,但是引用数组下标不可能比指针的效率高。在一般的情况下,我们多采用指针代替数组,但是如果以牺牲程序的可读性和可维护性为代价去换取高效率这不是一个好想法,同时这种做法也违背了软件工程的思想。
C:一点技巧:
CODE:
/* find keyword in source file*/
#include<stdio.h>
#include<string.h>
#define null 0
int main()
{ int look_upTarget(char const *t,char const *s[]);
char const *t="target";
char const *source[]={
"hacker",
"blog",
"baby",
"good",
"test",
"target",
null/*在这里我们用了一个空指针,那么在look_upTarget函数中就不需要知道和计算source中元素的个数了*/
};
printf("%d",look_upTarget(t,source));
getch();
}
int look_upTarget(char const *t,char const *s[])
{
for(;*s!=null;s++)
if(strcmp(t,*s)==0)
return 1;
return -1;
}
总结:1,数组名作为一个指针常量,一般来说指向数组的第一个元素的地址,但是也有一些特殊情况,如sizeof(source)和sizeof(source[0]),sizeof(source[1])等,
他们分别计算数组source所占用的内存空间和每一个数组元素所占用的空间。
2,在一般情况下,我们都将函数形式参数的中的指针类型定义为const类型,防止间接寻址对主函数中的值做了不可预料的修改。








