C语言概述
1.数据总线DB,地址总线AB和控制总线CB成为系统总线,即通常意义上的总线。
2.C语言的编译链接过程
3.数据类型所占字节的个数:
(1)char:1个
(2)short:2个
(3)int:4个
(4)long int:4个
(5)long long:8个
(6)float:4个
(7)double:8个
(8)long double:视编译器而定,8,12,16不等
(9)bool:1个
4.变量可读可写,常量只可读不可写。
5.局部变量是定义在函数体内部的变量,全局变量是定义在函数体外部的变量。如果全局变量和局部变量同名,变量的赋值采取就近原则。`
6.常量的分类:
C语言的常量可分为:
(1)字面常量
(2)用#define定义的宏常量
(3)用const关键字修饰的常变量,不可给用const关键字修饰的常变量赋新值
(4)枚举常量
(5)字符常量和字符串常量
1)单引号是字符的定界符;
2)双引号是字符串的定界符。
7.转义字符
(1)常用的转义字符
(2)转义字符可以将字符转为其它意义,还可以把定界符和转义符转换为字符意义。
(3)一些需要重点注意的点:
8.程序的编译与执行:
依次向下为文本区、数据区、堆区、栈区
9.程序的作用域与生存期:
(1)作用域(可见性)指标识符可被识别的范围,只有在作用域内标识符才可以使用。此阶段针对编译和链接过程。
(2)生存期
生存期指的是标识符从程序开始运行时被创建具有存储空间,到程序运行结束时消亡,释放存储空间的时间段。此阶段针对的是程序的执行过程。
10.数组:数组是包含给定类型的一组数据,即一组相同类型元素的集合。
注意:一下4种数组的声明均是正确的:
#define Arsize 10
enum { SIZE = 10};
const int size = 10;
int main()
{
int ar[Arsize];
int br[SIZE];
int cr[size];
int dr[21/4];
return 0;
}
针对dr,系统会自动将21/4转换成int 型数据5。
11.运算符
(1)C语言运算符优先级表
(2)左值与右值
能赋值的是左值,不能赋值的是右值。
(3)C语言中一个重要的运算符:取模运算符,它的作用有:
a)判断是否能够整除某个数
b)判别奇偶数,判别素数
c)计算范围,形成循环
d)求最大公约数,最常见的方法是欧几里得算法
#include<stdio.h>
int GCD(int a, int b)
{
if(a == 0)
{
return b;
}
else if(b == 0)
{
return a;
}
else if(a == b)
{
return a;
}
else
{
int mod = a % b;
while(mod != 0) //辗转相除法余数为0时b即是最大公约数,即使a<b,经过一次循环也会修正
{
a = b;//小的赋值给大的
b = mod;//余数赋值给小的
mod = a % b;//求余
}
return b;
}
}
int main()
{
int m, n;
printf("Enter two numbers: \n");
scanf("%d,%d", &m,&n);
int gcd = GCD(m,n);
printf("gcd = %d",gcd);
return 0;
}
递归实现:
#include<stdio.h>
int GCD(int a, int b)
{
if(b == 0)
{
return a; // a%b 模为0,赋值给b,代表循环结束,a即是最大公约数
}
else
{
return GCD(b, a%b); //递归实现
}
}
int main()
{
int m, n;
printf("Enter two numbers: \n");
scanf("%d,%d", &m,&n);
int gcd = GCD(m,n);
printf("gcd = %d",gcd);
return 0;
}
(4)三目运算符 条件表达式 ? 表达式1 : 表达式2;
示例:
int main()
{
int a = 10, b = 20, c = 0;
c = a < b ? a : b;
return 0;
}
若a < b , 则将 a 赋给 c , 否则将 b 赋给 c。
(5)前置++和后置++的区别
前置++和后置++的区别一般在赋值时体现,如下例所示
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
c = ++a;
c = b++;
return 0;
++a是先将a+1然后再赋给c,b++是先将b赋给c,然后再+1。
12.指针
存储地址的变量称为指针变量,在C语言中指针就是地址。
指针变量的大小:在32位操作系统中占4个字节,在64位操作系统中占8个字节。
13.结构体
程序开发人员可以使用结构体来封装一些属性,设计出新的类型,在C语言中称为结构体类型。