您的位置:首页 > 其它

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

2018-03-24 20:24 489 查看
这个并非全部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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: