- static修饰函数
其实static修饰函数和修饰全局变量是类似的,一个函数本来也有外部链接属性
当被static修饰时,外部链接属性就变成了内部链接属性,这个函数就只能在本源文件(.c)内部使用,其他文件就不能用了
C语言中static的3种用法
#define定义常量和宏👁️🗨️
#define 定义常量 一般定义常量全大写>
宏 也是一般都大写
指针
内存
** 内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。 所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。 为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。**
地址
变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。
int main()
{
int a = 10;
int * pa = &a;//& -取地址
pa = 20;// 解引用操作符
//指针变量是用来存放地址的一种变量
}
int main(){
int num = 10;
#//取出num的地址
//注:这里num的4个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址) 0x0012FF44
printf(“%p\n”, &num);//打印地址,%p是以地址的形式打印
return 0;
}
- 内存会被划分为小的内存单元,一个内存单元的大小是1个字节
2. 每个内存单元都有编号,这个编号也被称为:地址/指针
3. 地址/指针就可以存放在一个变量中,这个变量被称谓指针变量
4. 通过指针变量中存储的地址,就能找到指针指向的空间
指针变量的大小
大小的理解
结论:指针大小在32位平台是4个字节,64位平台是8个字节
结构体
结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。 比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。 这里只能使用结构体来描述了。
#include <stdio.h> //描述一个学生 //创建的一个学生类型 struct Stu { char name[20]; int age; char sex[5]; double score; }; int main() { struct Stu s1 = {"张三",20,"男",90.5}; struct Stu s2 = {"如花", 40,"女", 99.5}; scanf("%s %d %s %lf", s1.name, &(s1.age), s1.sex, &(s1.score)); //printf("%s %d %s %lf\n", s1.name, s1.age, s1.sex, s1.score); //结构成员访问操作符 //结构体变量.结构体成员 struct Stu * ps = &s1; //printf("%s %d %s %lf\n", (*ps).name, (*ps).age, (*ps).sex, (*ps).score); printf("%s %d %s %lf\n", ps->name, ps->age, ps->sex, ps->score); //-> 结构成员访问操作符 //结构体指针->结构体成员 return 0; }