前言
一:C语言字节数
二:语言的编译链过程
三:C语言–函数式编程
四:作用域(可见性)
五:生存期/生命期
六:数组
七:运算符
一、C语言字节
| 数据类型 | 字节数 || char | 1 |
| short | 2 |
| int | 4 |
| long int | 4 |
| long long | 8 |
| float | 4 |
| double | 8 |
| long double | 8 ; dev中12 或16 |
二、语言的编译链过程
三、C语言-函数式编程
C语言—函数式编程:把一个大的问题分解为多个小的问题。
函数的构成:
返回类型 函数名 (形参列表)
{
函数主体
}
函数的命名------要具有代表性
函数声明中,形参类型不可省略;编写时,一定要注意检查形参值
俩个凡是:
(1)凡是在函数外定义的变量都存储在数据区
(2)凡是在函数内定义的变量都存储在栈区
程序在执行的时候,计算机会分配相应的 CPU 和 内存
四、作用域(可见性)
作用域(可见性):指标识符能被使用的范围;只有在作用域内标识符才可以被使用-------此阶段只针对编译和链接过程
作用域又分为全局作用域,局部作用域,块内作用域(必然包含在某个函数当中,且只在块内有效。)等三种
函数中定义的标识符:包括形参和函数体中定义的局部变量
文件作用域也称全局作用域,定义在所有函数之外的标识符
注意:经过编译链接过程之后再讨论执行
int main()
{
int x = g_max;
{
int b = x;
}
return 0;
}
int x = g_max;------为全局变量
全局变量是指从当前位置起向下有效
局部变量仅在函数体内可见
int g_max = 10;
int main()
{
int x = 10;
int g_max = 0;
int a = g_max;
return 0;
}
当全局变量 g_max = 10 与局部变量 g_max = 0 冲突时,局部变量优先,由当前位置 ( int a = g_max ) 向上选择,选取最近变量
int g_max = 10;
int main()
{
int x = 10;
int g_max = 0;
int a = ::g_max;
return 0;
}
注意:若想隐藏局部变量使用全局变量,则可在变量名前加俩个问号
五、生存期/生命期
生存期/生命期-----此阶段针对程序的执行过程
概念:指标识符从程序开始运行时被创建,具有存储空间到程序运行结束时消亡的时间段
(1)局部变量生存期:函数被调用,分配存储空间,到函数执行结束,存储空间释放----存储在栈区(.stack)
(2)全局变量生存期:从程序运行前开始,到执行后结束----存储在数据区 (.data)
六、数组
int main ()
{
int ar [] = {12,23,34,45,56,67,78,89.90.100};
for (int i = 0; i < 10; ++i)
{
printf("%d\n",ar[i]);
}
return 0;
}
数组的描述:定义一个数组,数组含有十个元素,元素的类型时整型,由此可见,数组由类型和大小这俩部分组成
定义数组时,[10] 必须是整型常量
常量
#define ARSIZE 10----宏常量 (没有类型)
const int ar_size = 10----常变量
enum { Ar_size = 10 }----枚举常量
1,2,3,4…----字面常量
size of (int);------计算类型所占字节个数
size of ( a );------计算变量所占字节个数
七、运算符
( ,) 逗号运算符优先级最低
运算符举例:
(1)*= , +=
int main ()
{
int a = 3 , b = 4 , c = 5 ;
a* = b + c;
// a = a * b + c ; //-----(1)
// a = a * (b + c) ; //-----(2)
printf (" %d",a );
return 0 ;
}
加法优先级 > 乘等优先级 所以上式 (1)错误,(2)正确
(2)三目运算符
int Max_Int (int a,int b)
{
return ( a > b)? a:b;
}
C语言只有一个多目运算符-----三目运算符
(3)a++,++a
mov—移动
add—增加