• 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! ");
            printf("%s ", days[day]);
    }
    int main(void)
    {
            print_day(2);

    }

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

  • 相关阅读:
    计划任务和压缩归档
    libevent 源码学习三 —— 基本使用场景和事件流程
    libevent 源码学习二 —— reactor 模式
    libevent 库源码学习
    手动配置固定IP参数vim vim
    软件相关
    写xhttpd服务器时 遇到segmentation fault
    c与c++中输出字符指针和字符串指针的问题
    char * argv[] ,string简析
    传入参数与传出参数
  • 原文地址:https://www.cnblogs.com/hxu7373/p/3474527.html
Copyright © 2020-2023  润新知