c语言学习总结(4)数组学习总结

1、数组不能相互赋值,如:a[5]=b[5]

  数组不能作为函数的返回值如:void test(int a[5]) {...}

2、如果数组名放在=号的右边,那么这个数组会自动转换成数组首元素的指针。这样就可以解释上面为什么a[5]=b[5]是错误的赋值方式了,因为右边的b[5]自动转换成了指针,不能将指针赋值给数组。

比较:  printf(%s ,str);和scaf(%s,&str);

前一个自动转换成指针进行传递,而第二个是输入的函数表达式需要使用&符号表示输入传递给一个指针类型。

3、看这样的调用:int array[5] = {};foo(array);

  这里的使用方法不会报错,但是传递的不是一个数组类型的参数,而传递的是一个指针型的参数。

4、二维数组的存储实际上是连续存储的,比如:int a[3][2]={1,2,3,4,5};

5、Show me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables,and I won't usually need your flowcharts; they'll be obvious.

  书写代码时要注意维护成本,选择正确的数据结构来组织信息。如:

#include <stdio.h>
void print_day(int day)
{
        char days[8][10] = { "", "Monday",

              "Tuesday", "Wednesday",

              "Thursday","Friday",
              "Saturday", "Sunday" };
        if (day < 1 || day > 7)
                printf("Illegal day number!\n");
        printf("%s\n", days[day]);
}
int main(void)
{
        print_day(2);

}

如果用switch语句或者if语句来写这个,想想看是多么的糟糕。
 

posted @ 2013-12-14 17:37  tony7373  阅读(400)  评论(0编辑  收藏  举报