2203-C语言基础知识

本文详细介绍了C语言的基础知识,包括数据类型如基本数据类型、构造数据类型、指针类型和空类型,常量的分类,变量的声明及存储类别,以及运算符和表达式,如自增/自减、逻辑运算符。此外,还讲解了用户与计算机的交互,如输入/输出函数,以及分支结构程序设计中的if语句和条件运算符。
摘要由CSDN通过智能技术生成


一、基本构成元素和数据类型

1.数据类型:基本数据类型、构造数据类型、指针类型、空类型

  1. 基本数据类型:整数、字符型、实型(浮点型)、枚举类型
  2. 构造数据类型:数组类型、结构体类型、共同体类型
  3. 指针类型:指针类型的值用来表示某个变量在内存中的地址
  4. 空类型void:(1)对函数返回的限定;(2)对函数参数的限定

2.常量:整型常量、实型常量、字符型常量、转义字符、符号常量

  1. 整型常量:指可以直接使用的整型常数,可以是长整型、短整型、有符号整型和无符号整型
    注:位、字节和字用来描述计算机数据单位或计算机存储单位。这里主要指存储单位。
    最小的存储单位称为位(bit),它可以存储两个值之一(0/1),位是计算机的存储的基本单位,不能在一位中存储更多的信息。可以将计算机的内存划分为多个位,这样内存就可以包含数量很多的位,若要存储更多的信息,就要使用多个位的存储单位。
    字节(byte)是常用的计算机存储单位,1个字节占8位。
    字(word)是自然的存储单位。
    L表示该常量是整数型、U表示该常量是无符号整型
longNumber = 234L ;  表示长整型
unsignedNumber  = 501U;  表示无符号整型
unsignedLomgNumber = 1024U;  表示无符号整型
  1. 八进制常量:需要在数值前用0修饰,数值的每个数码取值是0-7,八进制数通常是无符号数
    十六进制常数:常量数值前用OX或Ox前缀,数值的取值码为0-9,A-F或a-f,表示10-15
    十进制:不需要添加前缀
  2. 计算机的符号数有三种表示方法:原码、反码、补码,对于有符号整数,其在内存中存放的最左边一位表示符号位,0为正数,1为负数
  3. 实型常量:十进制小数常量、指数形式
    十进制常量:也称科学计数方式0-9和小数点组成
    指数形式:e/E
  4. 字符型常量:用单引号括起来的一个字符
    (1)只能由单引号括起来
    (2)只能是一个字符
    (3)区分大小写
  5. 字符串常量:双引号,C语言中,存储字符串常量时,系统会在字符串的末尾自动加一个’\0’字符作为字符串的结束标志。
  6. 符号常量
    #define price 5

3.变量:整型变量、实型变量、字符型变量

  1. 整型变量: 有符号的,可以有负值,signed可以省略 无符号的,>0,unsigned不可以省略
  2. 实型变量: 单精度类型float:占4个字节的内存空间
    %f 双竞速类型double:占8个字节的内存空间
    %f 长双精度类型long double :16 %f
  3. 字符型变量: char,占一个字节

4.变量:auto、static、register、extern

  1. auto和static
    相同:
    作用域都仅限于声明变量的函数中
    区别:
    auto:当函数或语句结束时,系统自动释放空间
    static::变量保持函数上一次运行结束的结果
    运行结果比较:
#include <stdio.h>

void auto_fun();
void static_fun();

int main()
{
	printf("auto第一次运行结果:\n");
	auto_fun();
	printf("auto第二次运行结果:\n") ;
	auto_fun();
	printf("static第一次运行结果:\n") ;
	static_fun();
	printf("static第二次运行结果:\n") ;
	static_fun();
	return 0;
}

void auto_fun()
{
	auto int autoNum=5;
	autoNum = autoNum*2;
	printf("auto运行结果:%d\n",autoNum);
 } 
 
void static_fun()
{
	static int staticNum = 5;
	staticNum = staticNum*2;
	printf("static运行结果:%d",staticNum); 
 } 

在这里插入图片描述

  1. register变量:寄存器变量 register变量称为寄存器变量,存放在计算机的某个硬件中,而不思内存中,读写速度高。 说明:只有局部自动变量和函数的形式参数可以作为寄存器变量 即使定义变量存储类别为寄存器变量,变量的值也不一定是寄存器变量
    由于大多数计算机的寄存器不占用内存地址,所以无法获取寄存器变量的地址,即使编译器忽略register修饰把变量存储在内存中

  2. extern变量:外部变量
    作用域是从变量定义处开始,到本程序文件的末尾。如果文件在定义之前引用该外部变量,就要用关键字extern对改文件做外部声明。

#include <stdio.h>
int main()
{
	extern int externNum;
	printf("%d\n",externNum);
	return 0;
}

int externNum = 10;

二、运算符和表达式

1.强制类型转换

(类型说明符) (表达式)

float i= 10.5int j=(float) i;

2.自增/自减运算符

++i:相当于i=i+1,i先执行自增1,再参与其他运算
–i:相当于i=i-1,i先执行自减1,
i++:相当于i=i+1,i参与运算后,i再执行自增1

3.逻辑运算符与逻辑表达式

&&、||、!

4.逗号运算符与逗号表达式

表达式1,表达2,…,表达式n
求解过程:先求解表达式1,再求解表达式2,一直求解到表达式n,最终的整个表达式的值就是表达式n的值
逗号运算符的优先级是所有运算符中最低的
a=2,5-1,4+3,69;算出a=2
a=(2,5-1,4+3,6
9);算出a=54

三、用户与计算机交互——输入/输出

1.字符数输入/输出

输出:putchar()函数
输入:getchar()函数
putchar()函数每次只能输入一个字符,换行操作使用转义字符’\n’
getchar()函数每次只能接收一个字符,输入数字时也当做字符处理,输入多个字符时只接收第一个字符,getchar()的返回类型是整型,所以可以将返回值赋给一个字符变量、整型变量、或者是作为表达式的一部分
putchar()和getchar()的区别:getchar()函数没有参数,函数返回的的值就是从终端输入的字符

#include <stdio.h>

int main()
{
	char ch;
	ch = getchar();
	putchar(ch);
	putchar('\n');
	getchar();     //读入回车字符<Enter> 
	putchar(getchar());
	return 0;
}

2.字符串输入/输出

输出puts() : int puts(char *str);
输入gets():char *gets(char *str);

puts()函数:
参数str是字符指针类型,可以用来指向一个字符串,如果调用成功,就会返回一个非负整数,否则返回EOF(C语言中表示文件结束符)的同时设置错误指示;
会找到字符串中的第一个’\0’字符前所有的字符后换行,即在所要输出的字符串后自动添加’\n’字符

#include <stdio.h>

int main()
{
	char *str = "Hello c's world!";
	puts("Hello c's world!");
	puts(str);
	puts("Hello c's \0 world!'");
	return 0;
}

gets()函数:
读取字符串时,遇到换行符表示读取结束,读取结束后将换行符转换为字符串终止符’\0’

3.格式输入函数

  1. printf()函数
    格式控制
    %d 十进制
    %ld 十进制长整型
    %c 字符型
    %s 字符串
    %f 实型变量
    %5d 要求输出宽度为5,不够的左边补空格
    %5.4lf 输出的宽度是5,精度是4
    %-10.3s “-”表示如果字符串长度小于10,则字符串左对齐,右补空格;“.3”表示输出的字符串的前3个字符;“%-10.3s”表示输出字符串的前3个字符,并且左对齐
  2. scanf()函数
    scanf(格式控制,地址列表)
    (1) *字符:用以表示输入项,读入后不赋予相应的变量,用来跳过该输入值
    scanf("%d * %d",&a,&b);当输入1,2,3时,把1赋给a,把3赋给c
    (2) 宽度
    scanf("%5d",&a);当输入123456789时,只把12345赋给a
    (3) scanf()函数没有精度控制

四、分支结构程序设计

1.if 语句

if(表达式) 语句
if(表达式) 语句块1 else 语句块2
if(表达式1) 语句1; else if(表达式2) 语句块2; … ;else if(表达式n-1) 语句n-1; else 语句n;
if语句的嵌套

1.条件运算符

  1. 表达式1 ? 表达式2 : 表达式3;
  2. switch语句
switch (表达式)
{
   case 常量表达式1:
       语句块1;
   case 常量表达式2:
       语句块2;
       ...
   case 常量表达式n:
       语句块n;
   default:
       语句块 n+1;
}

五、分支结构程序设计

1.while语句

  1. 当型循环语句:先判断条件单的当型
while (表达式)
{
   语句块;
}
  1. 直到型循环语句:do-while语句
do
{
   循环体语句;
}while(表达式);
  1. for语句
for(表达式1;表达式;表达式3)
{
    循环体语句;
}

2.转移语句

  1. goto语句
    goto 标识符;
#include <stdio.h>

int main()
{
	goto flag;
	pritf("1");
	flag:
		printf("2");
	return 0;
}
  1. break语句:退出break语句
  2. continue语句:终止本次循环,执行下一循环
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值