目录
前言
全局变量和局部变量
局部变量
全局变量
作用域和生命周期
作用域
生命周期
字符串的定义
strlen(计算字符串长度)函数用法
结语
前言
各位大佬好啊,今天也来分享一下学习笔记呀,前两天课和事情太多了就没啥时间写。ok,没用的话就到此为止吧。
全局变量和局部变量
局部变量
简单说一下局部变量。局部变量就是只能在局部区域使用的变量,要了解局部变量我们就要了解什么是局部区域。局部区域可以理解为一个大括号({ })就是一个局部范围。在局部范围内创建的变量,只能在这个局部范围内使用,出了局部范围就会自动销毁,括号外面是不能使用的。
简单说一下局部变量。局部变量就是只能在局部区域使用的变量,要了解局部变量我们就要了解什么是局部区域。局部区域可以理解为一个大括号({ })就是一个局部范围。在局部范围内创建的变量,只能在这个局部范围内使用,出了局部范围就会自动销毁,括号外面是不能使用的。
在括号内创建的a变量,出了括号就被编译器定义为未定义的标识符a了。
全局变量
全局变量正好与局部变量属性相反,他能在整个工程的任意位置使用,在任意位置调用他都不会报错。
全局变量正好与局部变量属性相反,他能在整个工程的任意位置使用,在任意位置调用他都不会报错。
当全局变量定义在函数之后,需要在函数加上声明,但是我们没必要自己自找麻烦,使用还是定义在面最好。
那么假如,我定义了一个相同名称的局部变量和全局变量,编译器会优先调用哪个变量呢?
由代码可见,当局部变量与全局变量变量名相同时,编译器会优先调用局部变量。
作用域和生命周期
既然说到了局部变量和全局变量,就不得不说变量的作用域和生命周期。
作用域
作用域就是指变量能够在哪些范围内使用,就是变量的作用域。
作用域就是指变量能够在哪些范围内使用,就是变量的作用域。
num1的作用域在整个main函数内,而num2在出了大括号后就不能再使用了,这就是他们的作用域。
全局变量在整个工程的任意地方都可以使用,所以全局变量的作用域就是整个工程。工程结束了全局变量的作用域才结束。
生命周期
一辆车从生产到他报废后,这就是它的生命周期,从刚生产出来生命周期开始,到报废生命周期结束。一个变量的生命周期也是如此,从创建产生,到销毁而结束。
一辆车从生产到他报废后,这就是它的生命周期,从刚生产出来生命周期开始,到报废生命周期结束。一个变量的生命周期也是如此,从创建产生,到销毁而结束。
请注意:一定是当程序走到创建变量那条语句后生命周期才开始,作用域也是在生命周期开始后才开始的。下图的num3没有创建,生命周期还没开始,num3是作用域也没有产生。
全局变量的生命周期是整个工程,当工程结束全局变量的生命周期结束,也可以理解为这个工程的main函数结束后,全局变量的生命周期也跟着结束了。
字符串的定义
C语言有两种定义字符串的方法:
#includeint main() { char str1[]="abcd"; char str2[4]={'a','b','c','d'}; //%s 打印字符串 printf("%sn",str1); printf("%sn",str2); return 0; }
当我们用%s打印两个字符串时,发现str1正常打印了,但是str2打印了一组随机值,为什么呢?我们调试一下代码,我用编译器是【Visual Studio 2019】
按键盘上的F10进入调试状态
仔细观察监视,str1的末尾位置比str2的末尾多出了一个' ',这个' '其实就是字符串的结束,当printf打印字符串执行到' ',就停止打印,str2的末尾并没有' ',所以才会有随机值。改正的方法和很简单,只要在str2的末尾也放一个' '就行了。
注意:' '是一个字符,也占一个空间大小。
#includeint main() { char str1[]="abcd"; char str2[5]={'a','b','c','d',' '}; //%s 打印字符串 printf("%sn",str1); printf("%sn",str2); return 0; }
strlen(计算字符串长度)函数用法
头文件:#include,strlen函数是用来计算字符串长度的函数,strlen函数也是读取到' '后就停止读取,然后返回参数。
头文件:#include
虽然都打印了4,但是明显str2那报了个警告,str2没有终止符' '。虽然这不足以说明strlen是遇到' '后就终止继续打印了。
当我对代码稍作修改,在' '的后面继续添加字符并放上' ',len2依然打印的是4,说明strlen在读到' '时就返回了。
结语
天气转凉请各位终于防寒保暖~



