c语言三中字符分别是,C语言基础

文章目录

基础语法

程序就是指令序列

程序设计的四个层次

计算机算法(核心):数值算法、非数值算法

程序设计方法学:缩短程序设计周期、延长软件寿命、降低开发成本的关键

结构化程序设计方法(自顶向下,逐步求精的程序设计方法、单入口单出口-由顺序选择循环构成)

程序1=数据结构+算法+程序设计语言+语言环境

面向对象程序设计方法(数据抽象和信息隐藏技术 将数据的静态属性和和对他的操作封装在一起)

程序2=程序1+程序1+程序1+程序1………

程序设计语言:(基本成分:数据成分、运算成分、控制成分、传输成分)

程序设计环境与工具

C程序的基本组成结构是函数(由C语句构成)

语句以分号结束 以#开头的和注释(可在任何位置)不是c语句

注释://单行 /多行注释/

标识符:字母、下划线、数字(不可用作开头)

程序从main()函数开始运行到结束

标题文件不区分大小写

编译型的程序设计语言:编辑->.c的源程序->编译(编译器对源程序的句法和语法检查)->.obj二进制目标程序->连接(.obj和库函数连接到一起)->.exe可执行的目标程序->运行

C语言不提供输入输出函数

八进制以0开头 十六进制以0x开头 仅支持输入带负号 输出不识别负号

整数或实数后面加u、U表示无符号,l、L表示长整型,也可以加ul、UL

字符串常量以””定界(以\0结尾) 字符常量以‘’定界

表达式中类型自动转换(低精度->高精度):char->int float->double 能表示的最大值越大、长度越长精度越高

临时强制类型转换:(类型)常量、变量、(表达式)

%[0 -]m.nd—m宽度在左端补空格或无效,n个有效数字位在左端补0或无效

%[0 -]m.nf或%[0 -]m.ne—四舍五入保留小数点后n位后输出m宽度左端补空格或无效 n默认为6

%[0 -]m.ns—以m宽度输出前n个字符在左端补空格或无效 不够n个无效

i++优先级很低 即使括号了也不行 在表达式赋值之后

非0数据表示逻辑真 0表示逻辑假 逻辑关系有时不全被计算

数学函数形参和返回值都是双精度,三角函数为弧度制

If选择结构

if(判断表达式){

语句块;

}

else if(判断表达式){

语句块;

}

else{

语句块;

}

switch选择结构

switch(整型){

case 整型:语句1;[break;]

case 整型:语句2;[break;]

[default: 语句n;]

}

for循环

for([赋值语句];[判断语句];[i++]){

循环体;

}

while循环

while(判断语句){

循环体;

}

do循环(先循环,后判断)

do{

循环体;

}while(判断语句);

while((ch=getchar())!=’a’) 键入的字符被放在缓冲区按下回车再一个一个读取

数组的维度没有限制(从0开始),但必须是同一类型(字符串每行空出一个位置 char a[2][4]={{'1','2'.'3'},{"123"}};

char b[5]="1234";

printf("%s,%s,%s",a[0],a[1],b);

extern型和其他非main()函数中的auto型数组不能进行初始化

数组中没有赋初值的位置为0

数组只可隐含相对第一维的尺寸 (一维字符数组隐含尺寸后用字符常量赋初值,不会自动添加\0)

变量不能放字符串

输出某位以后的字符串用 首地址加数字、定位标号后加&

0=\0=NULL

变量所占用的存储单元首字节的地址作为变量的地址

%p、%x、%X都可以用作输出地址,但前者固定16位,不足则补0

取地址&只能和变量、数组结合达到地址升维

访问地址[]、*达到地址降维 []将地址偏移后访问

定义指针变量: cahr *pc=&c:*是说明符 给pc赋c的地址值

指针加减n=指针的数据类型所占字节数*n+指向的地址 ,指针之间相加减=指针之间相差的元素个数(不是字节数)

比较两个同类型的指针或指针和地址量之间的存储位置的先后关系

按二维数组的存储形式定义指针 *p==&a[0][0]==a[0]

行指针 int a[3][4] , (*p)[列数4]=a; 行指针p+1=&p[1] 则移动一行的字节

指针数组 int a[3][4] , *p[行数3]={a[0],a[1],a[2]}; 存放行首地址的数组 与行指针访问元素的形式一样

已知得:*和[]在定义变量时都是说明符,所以有名字符串的定义是把字符串的==地址赋给数组首地址

==,则无名字符串也可以将字符串常量的地址赋值给定义的指针变量,再由指针来引导操作,不同的是有名字符串存放的是字符串,无名字符串存的是首地址。占用空间的问题

无名字符串具有只读性,不能对无名字符串进行修改

定义函数: [存储类型] [数据类型] 函数名 (数据类型 形参,数据类型 形参){

函数体;

}

类型字节取值范围char=[signed] char1-128 ~ 127

unsigned char10 ~ 255

short [int]2-32768 ~ 32767

unsigned short [int]20 ~ 65535

int = [signed] int = long [int] = [signed] long [int]4-2147483648 ~ 2147483647

unsigned [int] = unsigned long [int]40 ~ 4294967295

float4-3.4e38 ~ 3.4e38

[long] double8-1.798e308 ~ 1.798e308

long long [int]8-9223372036854775808 ~ 9223372036854775807

格式转换字符

整数转换字符加l或h表示long或short

%c字符%d或%i十进制整数,大写表示读入长整型

%u无符号十进制整数

%o八进制,大写表示读入长整型

%x或%X十六进制,大写表示读入长整型

%f或%lf浮点数,大写表示读入双精度

%e或E指数格式输出浮点数

%g选取宽度小的方式输出浮点数

%s字符串,scanf_s时遇空格、制表符、换行符时结束

%%%

%p指针值

%n接收%n之前所读入的字符个数,并存入指定的整型变量的地址中

转义字符

\a响铃(BEL)\b退格(BS) ,Backspace

\f换页(FF),将当前位置移到下页开头

\n换行(LF)

\r回车(CR) ,将当前位置移到本行开头

\t水平制表(HT)

\v垂直制表(VT)

\\反斜线 \

\’单引号

\"双引号

\0空字符(NULL)

\ddd八进制数所代表的任意字符

\xhh十六进制所代表的任意字符

常用标题文件

alloc.h:动态分配函数

conio.h:屏幕处理函数

ctype.h:字符处理函数

math.h:数学函数

stdio.h:标准输入输出及文件操作函数

stdlib.h:标准使用函数

string.h:字符串处理函数

函数

printf(“输出字符串”,x,y); 用\n\与下一行连接

scanf_s(“输入格式和引号内格式一样”,&x,&y); 返回值等于输入字符个数 类似于%*c(d)读入但不赋值 引号内连续时可用空格、制表符、回车分割 两个此函数连在一起,后一个会接收前一个字符的回车

purchar(数字或字符常量或变量); 单字符输出

变量=getchar(); 单字符输入 需按enter才能接收 连续接收时吞回车

变量=getche();和变量=getch(); 不需要摁enter即可接收输入字符 getch()无回显

变量=pow(x,y); 乘方

gets(字符数组名); 接收用户输入的字符串,存入数组中,只有遇到回车才认为输入结束

puts(字符数组名); 输出字符串将\0自动变成\n输出

strlen(字符串); 计算不含\0的字符串长度(见\0就结束)

strcpy(目标字符串,源字符串); 将字符逐个替换达到复制字符串的目的

strcmp(字符串1,字符串2); 比较字符串ASC大小 相等返回0 1>2返回1 1<2返回-1

strcat(前字符串,后字符串); 前后拼接字符串 前字符串要是数组

关键字

流程控制

if: 条件语句

else:条件语句否定分支(与 if 连用)

switch:多分支结构(执行相等的case后,执行其后所有的case及default中的语句,所以常与break连用)

case:switch分支

default:多分支结构的否则

break:跳出当前花括号

continue:结束当前循环,开始下一轮循环

do:循环语句的循环体

for:循环语句 循环条件可以用逗号表达式 顺序1-2-循环体-3-2-循环体 for(;;)是死循环

while:循环语句的循环条件

goto:无条件跳转语句

return:子程序返回语句(可以带参数,也看不带参数)

存储属性

auto:声明自动变量 一般不使用 省略时默认为此

extern:声明变量是在其他文件中声明(也可以看做是引用变量)

static:声明静态变量

register:声明积存器变量

基本数据类型

_bool:声明布尔变量

_complex:复数型变量

_imaginary:复数型变量 纯虚数

char:声明字符型变量或函数 必须用单引号

int: 声明整型变量或函数 补码(符号位1为负 其余取反加一为真)

float:声明浮点型变量或函数 6位有效数字 8+24位

double:声明双精度变量或函数 15位有效数字 11+53位

void:声明无值或无参数函数,声明无指定类型指针(指向内存的某个地址)

short:声明短整型变量或函数(仅限于int)

long:声明长整型变量或函数(仅限于int、double)

signed:声明有符号类型变量或函数(仅限于char、int)

unsigned:声明无符号类型变量或函数(仅限于char、int)

构造类型(+数组+文件)

struct:声明结构体变量或函数

union:声明共用体(联合)数据类型

指针类型

const:声明只读变量,且在编译时赋值:const 数据类型 标识符=常数

restrict:限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式

volatile:说明变量在程序执行中可被隐含地改变

其他

inline:将函数展开,吧函数的代码复制到每一个调用处

sizeof:计算数据类型长度

typedef:用以给数据类型取别名(当然还有其他作用)

enum:声明枚举类型

预处理命令

#include使编译程序将另一源文件嵌入带有#include的源文件#include编译命令行中的目录中搜索->标准目录#include”stdio.h”先检索当前工作目录->编译命令行中的目录中搜索->标准目录#define在编译前,定义宏:#define 宏名 串

#ifdef如果宏已经定义,则编译下面代码

#ifndef如果宏没有定义,则编译下面代码

#undef取消已定义的宏

#if如果给定条件为真,则编译下面代码

#else

#elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码

#endif结束一个#if……#else条件编译块

#error强迫编译程序停止编译

#pragma

#line

运算符

优先级运算符功能元结合性0( )括号

1[ ]访问地址,整型或表达式2自左至右

1->指向结构或联合成员2自左至右

1.取结构或联合成员2自左至右

2!逻辑非1自右至左

2~按位取反1自右至左

2++加一(只对变量,不能连用)1自右至左

2--减一(只对变量,不能连用)1自右至左

2强制类型转换类型关键字1自右至左

2*访问地址或指针1自右至左

2&取地址1自右至左

2sizeof()测试数据长度1自右至左

3*乘2自左至右

3/除2自左至右

3%取余(只对整数,符号跟随前面)2自左至右

4+ -加 减2自左至右

5<< >>左移位 右移位2自左至右

6< > <= >=关系运算2自左至右

7== !=等于 不等于2自左至右

8&按位与2自左至右

9^按位异或2自左至右

10|按位或2自左至右

11&&逻辑与2自左至右

12||逻辑或2自左至右

13?:条件运算 式1? 式2: 式3 取二三中较高的类型返回2自右至左

14= (+ - * / % >> << & ^ |)=赋值运算2自右至左

15,逗号运算2自左至右

标签:语句,变量,int,基础,C语言,自左至,字符串,指针

来源: https://blog.csdn.net/maweizz/article/details/113896866

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值