谈谈初识c语言中 的几个重要问题

1.局部变量和全局变量

2.字符串中\0的作用以及注释

3.static的作用 

1:局部变量的作用域是变量所在的局部范围,生命周期是进入作用域生命周期开始,出作用域生命周期结束。全局变量的作用域是整个工程,生命周期是整个程序的生命周期。

#include<stdio.h>

int main()
{
	{
		int a = 10;
		printf("%d\n", a);
	}
	printf("%d\n", a);


	return 0;
}

图中括号里面的printf可以打印出来,外面的会报错,未定义标识符‘a'。这是个局部变量说明局部变量的生命周期在出作用域就结束了。

当局部变量和全局变量冲突的时候,该怎么办呢?

#include<stdio.h>
int a = 20;

int main()
{
	
		int a = 10;

	printf("%d\n", a);


	return 0;
}

 结果是10,所以当局部变量和全局变量一样的时候,局部变量优先使用。

(一个全局变量不给初始化的时候默认为0
一个局部变量不给初始化的时候默认为随机值)


数组的错误

int n = 10; int arr[n] ={0}这个数组的创建是错误的,数组的大小只能是常量不能是变量

2:字符串中"\0作为结束的标志"。

 为什么会出现这个结果呢,因为双引号代表一个字符串,它后面默认有一个\0,所以字符串打印出来是app,单引号字符后面如果没有\0的话,它的值是随机的,当后面加上一个\0的时候,它就可以打印出来app了。

单引号用%c打印,双引号用%s打印。

关于注释有2个特殊的:

\ddd ddd表示1~3个八进制的数字。如: \130 X 

\xdd dd表示2个十六进制数字。 如: \x30  0

3.static的作用

1>static修饰局部变量

2>static修饰全局变量

3>static修饰函数

当static修饰局部变量时,看下面的例子

 

 可以看到结果不同。当static修饰局部变量时,他不会销毁。

static修饰局部变量的时候,改变了局部变量的存储类型;
本来一个局部变量是存储在栈区的,被static修饰的局部变量是储存在静态区的。
存储在静态区的变量出了它的作用域变量也不销毁,所以生命周期较长

static修饰全局变量时

 

 static修饰全局变量的时候,改变了全局变量的链接属性:
本来一个全局变量是具有外部链接属性的,但是被static修饰之后就变成了内部链接属性。
这时static修饰的全局变量只能在本源文件(.c)中使用,其他文件无法再使用到。

static修饰函数跟全局变量一样,改变了链接属性。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值