WHCSRL 技术网

C语言基础(4)

一.关键字static

static可以被用来修饰局部变量,全局变量和函数。在修饰局部变量时,会延长局部变量的生命周期到整个程序;在修饰全局变量时,全局变量不能被外部函数引用;在修饰函数时,与全局变量的作用同理。

内存是一块很大的存储空间,分为三个区域:栈区,堆区,静态区。栈区是用来存放临时变量和局部变量的;堆区的作用是动态的内存分配;而静态区的作用是存放全局变量和静态变量。

对局部变量而言,实际上static的作用本质,就是将原本创建在栈区的局部变量创建在了静态区上,使局部变量的生命周期延长;对全局变量而言,全局变量本身是具有外部链接属性的,在其他源文件可以加上extern来引用全局变量,而static的作用,就是将这种外部链接属性变成了内部链接属性。使其只能在全局变量所在的源文件中被使用;对函数的作用与全局变量同理。

二.#define定义的宏

宏是一种非常类似函数的东西,Microsoft Word中对宏定义为:“宏就是能组织到一起作为一独立的命令使用的一系列word命令,它能使日常工作变得更容易”。

  1. #define M 100
  2. #define SRT "hehe"
  3. int main()
  4. {
  5. printf("%%d", M);
  6. printf("%%s", SRT);
  7. return 0;
  8. }

#define可以用来定义数字,也可以用来定义字符串,这里的M被定义为100,而它就变成了大小为100的常量。

  1. #define ADD(X,Y) ((X)+(Y))
  2. int main()
  3. {
  4. int a = 10;
  5. int b = 20;
  6. int c = ADD(a, b);
  7. printf("%%d", c);
  8. return 0;
  9. }

#define也可以定义运算顺序,起到类似函数的作用。

三.指针浅谈

一个一个的指针相当于一个一个内存的编号,一个指针管的内存大小是一个字节,当创建变量的大小为四个字节时,取最小的那个指针,作为这四个内存的指针。

指针大小是由操作系统的位数决定的,32位操作系统对应的指针大小是4个字节,64为操作系统对应的指针大小是8个字节。32位操作系统最多能控制2的32次方个指针,也就是4gb的大小。

四.结构体

结构体指的是一组数据,比如描述一个东西,需要一组数据来描述,这时就需要用结构体来描述了。结构体的使用方法是创建几个这个结构体需要的变量,先不用赋值,在用到时可以给这个结构体取一个名字,就能对其进行赋值;具体例子见如下代码。

  1. struct Stu
  2. {//结构体成员
  3. char name[20];
  4. int age;
  5. char sex[10];
  6. };
  7. int main()
  8. {
  9. struct Stu zhangsan = {"张三",30,"男"};
  10. struct Stu lisi = {"李四",24,"保密"};
  11. printf("%%s %%d %%s", zhangsan.name, zhangsan.age, zhangsan.sex);
  12. printf("%%s %%d %%s", lisi.name, lisi.age, lisi.sex);
  13. return 0;
  14. }