美文网首页
编程基础

编程基础

作者: 小芳姑娘2012 | 来源:发表于2017-11-21 11:24 被阅读21次

    C语言

    #define定义的宏和const定义的常量有什么区别?

    • defined定义宏的指令,程序在预处理阶段将用#define所定义的内容只是进行了替换。因此程序运行时,常量表中并没有用#define所定义的宏,系统并不为它分配内存,而且在编译时不会检查数据类型,出错的概率要大一些。
      const定义的常量,在程序运行时是存放在常量表中,系统会为它分配内存,而且在编译时会进行类型检查。

    给出以下代码的输出(数组,指针)

      int array[5] = {1, 2, 3, 4, 5};
      int *p = &array[0];
      int max = MAX(*p++, 1);
      printf("%d %d", max, *p);
    

    参考答案:1, 2
    分析:p指针指向了数据array的首地址,也就是第一个元素对应的地址,其值为1,1 > 1Max的值为1 ,*p++,p指向的地址对应的是2.

    这个关于数组与指针讲的很详细,可以参考学习。
    http://www.jianshu.com/p/605858e5bcf3?utm_campaign=maleskine&utm_content=note&utm_medium=pc_all_hots&utm_source=recommendation

    sprintf,strcpy,memcpy使用上有什么要注意的地方

    • strcpy是一个字符串拷贝的函数,函数原型是 strcpy(chardst,const char src) 。将src开始的一段字符串拷贝到dst开始的内存中去,结束的标志符号为 ‘\0',由于拷贝的长度不是由我们自己控制的,所以这个字符串拷贝很容易出错。
    • memcpy是一个内存拷贝函数,memcpy(char dst, const char src, unsigned int len)
    • sprintf是格式化函数。将一段数据通过特定的格式,格式化到一个字符串缓冲区中去。spintf格式化的函数的长度不可控,有可能格式化后的字符串会超出缓冲区的大小,造成溢出。

    static关键字的作用

    • 隐藏。编译多个文件时,所有未加static前缀的全局变量和函数全部可见。
    • 保持变量内容的持久。全局变量和static变量都存储在静态存储区,程序开始运行就初始化,只初始化一次。static控制了变量的作用范围。
    • 默认初始化为0。

    数据结构

    链表

    堆栈

    二叉树

    计算机网络

    操作系统

    相关文章

      网友评论

          本文标题:编程基础

          本文链接:https://www.haomeiwen.com/subject/pcwvvxtx.html