day05 C语言初阶——关键字static,指针结构体初步,宏函数等

day05

谁能横刀立马,唯我飞牛大将军!

下面是day05所学到的知识:
涵盖知识点:
关键字static
#define定义常量和宏函数
指针初步
结构体初步

1.关键字static
三种用法:
修饰局部变量——静态局部变量
修饰全局变量——静态全局变量
修饰函数——静态函数

(1)先讨论static修饰局部变量

<1>当没修饰时:
在这里插入图片描述

<2>当修饰时:
在这里插入图片描述
总结:static修饰局部变量时,改变了变量的生命周期,让静态局部变量的作用域依然存在,到程序结束,生命周期才结束。需要知道一点的是,该局部变量的作用域没有改变。

(2)再讨论static修饰全局变量

思路:此时我定义了两个在同一目录下的两个.c源文件,目的是为了验证全局变量支不支持跨文件访问,并且验证全局变量在被static修饰之后会发生怎样的变化。

<1>当没修饰时
在这里插入图片描述
在这里插入图片描述

<2>当修饰时

在这里插入图片描述
总结:首先,全局变量支持跨文件访问。其次,一个全局变量被static修饰,使得该全局变量只能在本源文件中使用,不能被其他源文件使用。

(3)最后讨论static修饰函数

<1>当没修饰时
在这里插入图片描述
<2>当修饰时
在这里插入图片描述
总结:首先,函数访问支持跨文件。其次,一个函数被static修饰,使得该函数只能在本源文件中使用,不能在其他源文件中使用。

2.#define 定义常量和宏

(1)简单地文本替换

#define MAX 100

(2)“宏函数”
在这里插入图片描述

3.指针初步

(1)内存:存储器,计算机中所有程序的运行都是在内存中进行的。
为了有效的使用内存,就把内存划分成了一个个小的内存单元,每个内存单元的大小为1个字节
为了能够有效的访问内存中的每一个单元,就给内存单元进行编号,这些编号被称为内存单元的地址
定义变量,全部都是在内存中定义或开辟的。
(2)鼠标双击的时候,就是把exe程序加载到内存中。
(3)编址是硬件电路自动完成的。

如何取地址?

#include <stdio.h>
#include <windows.h>


int main()
{
	int num = 10;
	printf("%p\n",&num);
	system("pause");
	return 0;
}

如何存储地址?

int num = 10;
int *p ;
p = &num;

实例:

#include<stdio.h>
int main{
int num = 10;
int *p = &num;
*p = 20;
printf("%d\n",num);
return 0;
}

几点说明:
1.指针就是地址。
2.指针变量是变量,里面存放地址。
3.指针变量里面放的是指针,这种说法可以的。
4.对指针解引用,代表的是指针所指向的变量。

推广到其他类型:

#include<stdio.h>
int main{
char p = 'a';
char*q = &p;
*q = 'b';
printf("%c\n",p);
return 0;
}

指针变量的大小
在这里插入图片描述
结论:指针大小在32位平台是4个字节,在64位平台是8个字节

4.结构体初步
(1)结构体使得C语言具有描述复杂类型的能力。
(2)例如:
struct Stu
{
char name[20];
int age;
char sex[5];
char id[15];
}
(3)结构体的初始化

struct Stu s = {"张三"20"男","20180202"};//打印结构体信息

printf("name = %s age = %d sex = %s 
id = %s",s.name,s.age,s.sex,s.id);//.为结构成员访问操作符

struct Stu *ps = &s;
printf("name = %s age = %d sex = %s 
id = %s",ps->name,ps->age,ps->sex,ps->id);//->操作符
发布了10 篇原创文章 · 获赞 11 · 访问量 1835

猜你喜欢

转载自blog.csdn.net/Flying_Cow_Z/article/details/105243844