【C语言攻略】从零开始的C语言生活——初阶篇(3)

目录

前言

 全局变量和局部变量

         局部变量

        全局变量

作用域和生命周期

      作用域 

     生命周期

字符串的定义

strlen(计算字符串长度)函数用法

结语


前言

        各位大佬好啊,今天也来分享一下学习笔记呀,前两天课和事情太多了就没啥时间写。ok,没用的话就到此为止吧。

 全局变量和局部变量

         局部变量

       简单说一下局部变量。局部变量就是只能在局部区域使用的变量,要了解局部变量我们就要了解什么是局部区域。局部区域可以理解为一个大括号({ })就是一个局部范围。在局部范围内创建的变量,只能在这个局部范围内使用,出了局部范围就会自动销毁,括号外面是不能使用的。

 在括号内创建的a变量,出了括号就被编译器定义为未定义的标识符a了。

        全局变量

        全局变量正好与局部变量属性相反,他能在整个工程的任意位置使用,在任意位置调用他都不会报错。

当全局变量定义在函数之后,需要在函数加上声明,但是我们没必要自己自找麻烦,使用还是定义在上面最好。

 那么假如,我定义了一个相同名称的局部变量和全局变量,编译器会优先调用哪个变量呢?

 由代码可见,当局部变量与全局变量变量名相同时,编译器会优先调用局部变量。

作用域和生命周期

既然说到了局部变量和全局变量,就不得不说变量的作用域和生命周期。

      作用域 

 作用域就是指变量能够在哪些范围内使用,就是变量的作用域。

 

num1的作用域在整个main函数内,而num2在出了大括号后就不能再使用了,这就是他们的作用域。

        全局变量在整个工程的任意地方都可以使用,所以全局变量的作用域就是整个工程。工程结束了全局变量的作用域才结束。

     生命周期

        一辆车从生产到他报废后,这就是它的生命周期,从刚生产出来生命周期开始,到报废生命周期结束。一个变量的生命周期也是如此,从创建产生,到销毁而结束

 请注意:一定是当程序走到创建变量那条语句后生命周期才开始,作用域也是在生命周期开始后才开始的。下图的num3没有创建,生命周期还没开始,num3是作用域也没有产生。

      全局变量的生命周期是整个工程,当工程结束全局变量的生命周期结束,也可以理解为这个工程的main函数结束后,全局变量的生命周期也跟着结束了。

字符串的定义

C语言有两种定义字符串的方法:

#include<stdio.h>
int main()
{
    char str1[]="abcd";
    char str2[4]={'a','b','c','d'};
    //%s 打印字符串
    printf("%s\n",str1);
    printf("%s\n",str2);
    return 0;
}

       当我们用%s打印两个字符串时,发现str1正常打印了,但是str2打印了一组随机值,为什么呢?我们调试一下代码,我用编译器是【Visual Studio 2019】

按键盘上的F10进入调试状态 

仔细观察监视,str1的末尾位置比str2的末尾多出了一个'\0',这个'\0'其实就是字符串的结束,当printf打印字符串执行到'\0',就停止打印,str2的末尾并没有'\0',所以才会有随机值。改正的方法和很简单,只要在str2的末尾也放一个'\0'就行了。

注意:'\0'是一个字符,也占一个空间大小。

#include<stdio.h>
int main()
{
    char str1[]="abcd";
    char str2[5]={'a','b','c','d','\0'};
    //%s 打印字符串
    printf("%s\n",str1);
    printf("%s\n",str2);
    return 0;
}

strlen(计算字符串长度)函数用法

头文件:#include<string.h>,strlen函数是用来计算字符串长度的函数,strlen函数也是读取到'\0'后就停止读取,然后返回参数。

虽然都打印了4,但是明显str2那报了个警告,str2没有终止符'\0'。虽然这不足以说明strlen是遇到'\0'后就终止继续打印了。

 当我对代码稍作修改,在'\0'的后面继续添加字符并放上'\0',len2依然打印的是4,说明strlen在读到'\0'时就返回了。

结语

天气转凉请各位终于防寒保暖~

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值