编程基础

2017-11-21  本文已影响21人  小芳姑娘2012

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。

数据结构

链表

堆栈

二叉树

计算机网络

操作系统

上一篇下一篇

猜你喜欢

热点阅读