C语言第一节课

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语言中称为结构体类型。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值