暑期C语言学习第四题-完整版

一、关键字

       1、typedef

             是类型定义,它的主要作用是给现有的数据类型起一个新的名字。这样做的好处是让代码更加清晰易懂,尤其是在处理复杂的结构体、联合体、指针等数据类型时。

             我们用几个实例来更直观的表示一下:

struct Student //假设我们有一个结构体,用来表示学生的信息:
{  
    int id;  
    char name[50];  
    float score;  
};


//每次声明这个结构体变量时,我们都需要写 struct Student,这有点长。使用 typedef,我们可以给这个结构体起一个名字。

typedef struct Student
{  
    int id;  
    char name[50];  
    float score;  
} Student; // 注意这里的Student就是struct Student的别名

//这样就能更直接、简介的表示。

       2、 static

             static是用来修饰变量和函数的,分为三种。

  •  修饰局部变量-称为静态局部变量。
int arr()
{
int a=1;
a++;
printf("%d ", a);
}
 
int main()
{
 
for(int i=0;i<10;i++)
{
arr();
}
int arr()
{
static int a=1;
a++;
printf("%d",a);
}

int main()
{

for(int i=0;i<10;i++)
{
arr();
}

return 0;
}

 我们还是通过一个代码来分析,我们可以先试一下不带有static的代码。

不带有static的结果为:

带有static的结果为:

 

       我们来分析一下两次结果,相当于代码在执行完一次之后,保留了它的值,并进行了下一次的运算。这就是static在修饰局部变量时,延长生命周期功能:就是当static修饰局部变量时,该变量的生命周期会延长至整个程序的执行期间。这意味着,即使在函数或代码执行完毕后,该局部变量的值仍然会被保留,并在下一次函数或代码执行时保持上一次的值

  •  修饰全局变量-称为静态全局变量。
#include <stdio.h>  
  
// 全局变量  
int a = 10;  
  
void fun() 
{  
    // 访问和修改全局变量  
    printf("全局变量在fun()中的值: %d\n", a);  
    a = 20;  
}  
  
int main() 
{  
    // 访问全局变量  
    printf("全局变量在main()中的初始值: %d\n", a);  
    fun(); // 调用函数,它将修改全局变量的值  
    // 再次访问全局变量,查看修改后的值  
    printf("全局变量在main()中修改后的值: %d\n", a);  
    return 0;  
}

我们可以通过分析这个代码,发现其结果为:

 

就是全局变量是在程序的整个执行期间都有效的变量,它在程序的任何地方都可以被访问和修改

  •  修饰函数-称为静态函数。

主要作用是改变函数的链接属性,使得该函数只能在其被定义的源文件中可见,即该函数成为了一个内部链接的函数。这意味着,该函数不能在其他源文件中被直接调用,即使它们被编译并链接到了同一个程序中。

#include <stdio.h>  
  
// 使用static修饰,这个函数只能在file1.c内部被调用  
static void staticFunction() 
{  
    printf("This is a static function in file1.c\n");  
}  
  
void publicFunction() 
{  
    // 可以在这里调用staticFunction(),因为它是在同一个源文件中定义的  
    staticFunction();  
}  
  

  
// main函数可能位于file1.c或另一个源文件中  
// 如果位于另一个源文件中,则不能直接调用staticFunction(),但可以通过调用publicFunction()来间接调用它  
  
// 假设main函数位于file1.c中  
int main() 
{  
    publicFunction(); // 正确:通过publicFunction()间接调用了staticFunction()  
    return 0;  
}

static修饰函数的使用并不常见,因为C语言通过不同的源文件来组织代码,并且通常通过头文件来声明需要在多个源文件中共享的函数原型。 

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DJCSDD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值