关于部分常量,变量等相关概念的总结

这个并非全部c语言的初期概念,只是自己在每个板块相对应一些细节的总结,不对之处请指出

1.转义字符:

\ddd,\xddd这些都是可以输出的整形数值。d前后分别表示的是八进制和十六进制的ASCII值。所以他们的表示的值是有限的。

2.整形数据类型有int char long等等。他们所占内存的单位是以字节来计算。如int占四个字节,一个字节又等于八个比特位,一个比特位有可以表示八位二进制数,从而int类型可以表示2^32个数字。

3.常量

常量一般有 字面常量,const定义的具有常属性的变量,枚举常量,define定义的常量等。

其中const定义的变量无法被再赋值

#include<stdio.h>
int main()
{
 const int i=4;
  i=3;//无法赋值
}

但可以通过指针寻地址的方式改变其值。然而,在C++文件中,编译器对于const修饰的变量会主动优化,通过指针方式赋值虽然可以存储到内存中,但因为编译器的优化将const修饰的变量内容存储到了交换数据更快的寄存器,所以赋值显示是原值。这时候需要用variable关键字修饰使变量只能访问内存从而防止编译器优化。

3.关于变量的作用域和生命周期及static静态修饰


void test()
{
	int a = 0;//加上修饰词static其作用直到整个程序结束
	a++;
	printf("%d", a);
}

int main()
{
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		test();

	}
	getchar();
	return 0;

此程序输出结果为全1.这就表明了在外部函数内定义的变量作用域和有效周期,但static变量修饰时,使局部变量的生命周期变长。

extern修饰词可以在同一工程底的源文件之间引用变量,但无法引用static修饰的全局变量。

*局部(auto)变量都存储在内存堆栈区,因为进入代码块时创建出去时候销毁,从而自动变量没有默认得初始值。

被static修饰的局部变量和全局变量,存储在 内存的静态区,若在声明时未初始化,他们的值0。(函数的形参无法被static修饰,因为实参总是在堆栈中传递给函数,用于支持递归。)

4.关于返回值

#include <stdio.h>
int main
{
 int a =55;
 printf("%d",printf("%d",printf("%d",a)));
 return 0;
}

对于这个程序,输出结果是5521.原因是自最内层printf函数已经声明了打印出数字a=55后,到达上一层函数,此时该层函数接收的是printf函数的返回值,也就是上次打印字的个数,55,即2个。返回后到上一层函数,返回值也就是1.


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值