关于部分常量,变量等相关概念的总结
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.
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.
相关文章推荐
- 常量与变量的部分总结
- java中常量变量和部分总结一
- 由一个语句引出的关于C的变量和常量的相关知识
- 关于函数里和函数外的变量/类/常量的
- 关于“重定位”及其相关的几个概念
- Asp.net性能优化总结[关于数据处理相关的优化]
- WebService学习总结(一)——WebService的相关概念
- WebService学习总结(1)——WebService相关概念
- 关于unicode,mbcs,utf8,charset,encoding等相关概念的说明
- iOS 关于NSString的部分扩展 部分总结
- 关于字符串类型相关的问题总结
- 关于python下划线命名的事儿以及magic变量相关
- 第三天 简单的一个程序剖析,关键字,关于变量,常量,标识符,
- ios的内存机制与静态变量,外部全局变量,常量总结
- 关于Entity Framework中的Attached报错相关解决方案的总结
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- Android开发学习总结——Android开发的一些相关概念(转)
- [总结]关于VS2002下的项目迁移到VS2005下相关问题总结
- 关于HttpHandler的相关知识总结
- TQ2440的学习——TFT LCD控制显示总结(硬件概念、初始化相关配置)