运算符优先级

  • 自右向左记忆口诀

    • 条件赋值自增减(?: =/+=/-= ++ -- )
  • 指针取址按位反 (* & ~)
  • 内存非负强制转 (sizeof ! - (type))
  • define 前面的#标志着define是一个【预处理命令】而不是C语句。
  • 高字节在【高地址】存储单元,低字节在【低地址】存储单元。
  • 16位的内存中-65537-1在内存中的值是一样的。
  • 16位的内存中-655351在内存中的值是一样的。
  • 整型常量后可加字母L或l表示long int型常量,如123L, 45l, 0XAFL.
  • U或u表示无符号数
  • float占4个字节 double占8个字节 long double 占10个(TC/BC)或8个(VC)字节
  • 【转义字符】r光标到当前行首、t制表符、b退格、v竖向跳格、a鸣铃
  • ++和--不可用于常量和表达式
  • <<和>>表示位移运算符,左移值乘2,右移值除2。
  • C语言常量分为直接常量符号常量,定义符号常量需要使用预处理命令#include。
  • 不合法的浮点数[e3],[2e4.3],[.e5],[-e3]

格式化输出

  • 两个scanf函数调用之间通常需要使用【fflush库函数】清除键盘缓冲区字符
  • 除了X,E,G 其他格式转换符均为小写字母

整型

  • 有符号整型输出 --- %[-/+][0][宽度][.至少输出位数][l/h][u/o/x/X]
  • 无符号整型输出 %[-/+][#][0][宽度][.至少输出位数][l/h][u/o/x/X]
  • - 表示左对齐
  • + 表示有正号显示正号
  • 0 表示空格补0
  • # 表示16进制数要输出0x或0X,八进制数要输出0
  • %hd表示输出短整型,%o输出八进制,%x或%X输出十六进制
int a = 123;
print("a=%06dn", a);   // a=000123;
print("a=%+06dn", a);  // a=+00123;
print("a=%-06dn", a);  // a=123;
print("a=%6dn", a);    // a=□□□123;
print("a=%+6dn", a);   // a=□□+123;
print("a=%-6dn", a);   // a=123;
print("a=%6.4dn", a);  // a=□□0123;
print("a=%-6.5dn", a); // a=00123;

浮点型

  • 实数输出 %[-/+][#][0][宽度][.precision][l/L][f/e/E/g/G]

    • %f 表示小数点后要输出六位,不够补0
  • %g 不输出无意义的0
  • %e 指数形式输出
  • #表示必须输出小数点
  • [.precision]输出小数部分的位数(要四舍五入)

字符的输入输出

  • %.3s输出字符串前3个字符
  • getchar:读取键盘输入一个字符,回车键结束,回显
  • getc:读入流文件一个字符,回车键结束,回显
  • getche:读取键盘输入一个字符,任意键结束,回显
  • getch:读取键盘输入一个字符,任意键结束,不回显
  • putchar:输出一个字符
  • putc:输出一个字符到流文件
  • puts:输出字符串(自动换行)

一些错误的用法

scanf("%d5.2f",&f);  //输入浮点数不可规定精度
scanf("%d",&(a+b));  //表达式没有地址,不能用取地址符

选择结构

switch-case语句注意事项

switch(A);  //A可以是int、char或者枚举,不可为浮点数
case 1:{b=b+1; break;} // {}可加可不加
case x:   //错误❌,case后面不可为变量
case; // 错误❌,case后面直接跟分号是错误的
switch a // 错误,switch后面的括号不可省略
/*swith语句可以嵌套*/

  • C语言语句可分为表达式语句、复合语句、函数调用语句、空语句、控制语句。
  • 逻辑运算符两侧的运算对象数据类型可以是任何类型的数据。

数组

一维数组

  • 数组名不可被赋值
  • memset的使用---实现对某内存块各字节单元整体赋同样的值
  • memcpy的使用---实现两个数组间的赋值
// 每个数据单元的值为‘a’
char str[10];
memset(str,'a',10);
// 每个数据单元的值清0
int a[10];
memset(a,0,10*sizeof(int));
//[思考题]下面程序执行后数组a的各元素值是多少?
short a[10];
memset(a,2,10*sizeof(short));//值为514【00000010 00000010】// memcpy的用法
memcpy(b,a,5*sizeof(int));

二维数组

  • 二维数组的赋值
// 数组元素的整体赋值
int a[2][3] = {{1,2,3},{1,2,3}};  //{1,2,3,1,2,3}
// 数组元素的整体赋值
int a[2][3] = {1,2,3,1,2,3};      //{1,2,3,1,2,3}
// 数组元素的部分赋值
int a[2][3] = {{1},{3};  //{1,0,0,1,0,0}
// 数组元素的部分赋值
int a[2][3] = {1,2,3};  //{1,2,3,0,0,0}
// 数组元素的部分赋值,省略一维
int a[][3]  = {{1,2},{4}} //{1,2,0,4,0,0}
// 数组元素的部分赋值,省略一维
int a[][3]  = {{1,2,3,4} //{1,2,3,4,0,0}

函数

填空题

  • 当函数返回值缺省时,函数的返回值类型为【int
  • 静态局部变量若在定义是未赋初值,则系统赋初值为【0】,其生存周期是【整个源程序】,其作用域是【在该变量的函数内或复合语句中】。
  • 形参只能是【变量】。
  • C语言中,函数的隐含存储类别是【extern】。

四种变量的存储类型

  • 动态存储类型:auto, register
  • 静态存储类型:extern, static
  • auto 只能在函数内或符合语句中定义(局部变量)
  • register 只有局部变量和形式参数可以定义
  • extern是函数的隐含存储类别

指针

表示a[i][j]的几种形式

a[i][j]
*(a[i]+j)
*(*(a+i)+j)
(*(a+i))[j]

数组指针

int (*p)[4];
// 表示指向含有4个int型元素的一维数组指针
// 可用来表示二维数组的行指针// 利用p访问数组元素的四种形式
p[i][j]
*(p[i]+j)
*(*(p+i)+j)
(*(p+i))[j]

动态内存分配

  • malloc() 分配若干个字节的内存空间
  • calloc() 分配若干个连续的存储空间
  • realloc() 改变原来分配的存储空间大小
int *p = (int*) malloc( 4 *sizeof(int));
int *p = (int*) calloc( 4, sizeof(int))int *p = (int*) malloc( 4 *sizeof(int));
p = (int*) realloc(6 *sizeof(int));

指针函数---- 函数类型 *函数名(形参1,形参2,...)

  • 【注意】如果函数返回一个指针,不能返回auto型的局部变量地址,但可以返回static型的局部变量地址

函数指针---- 函数类型 (*指针变量)(形参1,形参2,...)

结构体与共用体

间接定义法

struct 结构体类型名
{数据类型名   成员名
};
// 结构体的变量的定义
struct 结构类型名  变量列表名;
// 可定义多个结构类型变量
struct students_info stu1, stu2;
// 可定义指向结构体类型的指针变量
struct students_info *p;

直接定义法

struct 结构体类型名
{数据类型名   成员名
}变量名列表;

结构体类型不分配内存,结构体变量分配内存;结构体类型不能被赋值、存取和运算,结构体变量可以。

结构体变量的引用

// 非指针类型
结构体变量名.成员名
// 指针变量类型
结构体指针->成员名
(*结构体指针).成员名

文件

文件的打开与关闭

  • fopen 发生错误时,函数的返回值是【0(NULL)】打开成功返回【文件结构体指针】
  • fcolse正常关闭文件是,返回值是【0】,否则是【非0】。
  • feof() 遇到文件尾返回【真(非零值)】,否则返回【假(0)】

打开文件的方式

  • r 只读
  • w 创建新文件,只写
  • a 打开已有文件,在末尾追加,只写(若文件不存在,创建新文件,只写)
  • r+ 打开已有文件,可读写
  • w+ 创建新文件,可读写(若已有,则覆盖)
  • a+ 可读写,其余同a
  • t 打开文本文件
  • b 打开二进制文件

文件的读写

  • 字符读写函数:【fget】和【fputc】。
  • 字符串读写函数:【fgets】和【fputs】。
char str[] = "123456789";
fputs(str, fp);
fgets(str, 8, fp);

  • 数据块读写函数:【fread】和【fwrite】一般用于二进制文件的输入和输出
fread(指针,数据项的大小,移动的n个数据项的字节,文件指针)
fread(a, sizeof(short),10, fp); // 从文件中读10个整型数据到数组a

  • 格式化读写函数【fscanf】和【fprintf】一般用于文本文件的输入和输出
int fscanf (文件指针, 格式字符串,输入列表);
fscanf(fp, "%d,%d",&i,&t);
int fprintf (文件指针, 格式字符串,输入列表);
fprintf(fp, "%d,%d",i, t);

文件的定位读写

  • rewind:将指针指向文件开头
  • fseek: 将指针指向特定的位置
    • SEEK_SET 0 文件开始处
  • SEEK_CUR 1 文件当前处
  • SEEK_END 2 文件末位处
int fseek(文件指针,位移量,起始点);
fseek (fp, 2*sizeof(int),SEEK_SET);

  • ftell: 将指针指向当前处

c语言 数组、字符串的形参格式_华中师范大学计算机考研874C语言笔记(一)相关推荐

  1. c语言中apos是什么头文件,华中科技大学计算机学院C语言程序设计字符串apos;apos;apos;apos;.ppt...

    华中科技大学计算机学院C语言程序设计字符串'''' 第3章 基本的标准输入与输出 华中科技大学计算机学院 C语言程序设计 C语言程序设计 主讲教师:周时阳 标准输入输出是指利用标准C提供的输入输出库函 ...

  2. 计算机考研C语言基础

    计算机考研C语言基础 概述 ​ C语言是一门面向过程的.抽象化的通用程序设计语言,广泛应用于底层开发.C语言能以简易的方式编译.处理低级存储器.C语言是役产生少量的机器语言以及不需要任何运行环境支持便 ...

  3. c语言程序的标识符分类,华中科技大学计算机学院C语言程序设计标识符.PPT

    华中科技大学计算机学院C语言程序设计标识符 第2章 数据类型.运算符 和表达式 2.6.6 自增自减运算 运算符表 -- ++ 运算符: 操作数是任意基本类型之变量(或左值表达式),运算结果是: ⑴ ...

  4. c语言中判断字符串s1大于s2 应当使用,湖北省计算机二级C语言考试

    <湖北省计算机二级C语言考试>由会员分享,可在线阅读,更多相关<湖北省计算机二级C语言考试(11页珍藏版)>请在人人文库网上搜索. 1.1.计算机在实现工业自动化中的应用主要是 ...

  5. 在c语言程序中将数据分为两种,2012年计算机二级C语言考点归纳汇总(一至四章)...

    第1章程序设计基本概念考点归纳 1.1 C语言的特点 C语言是近年来非常流行的语言,很多人宁愿放弃已经熟悉的其他语言而改用C语言,其原因是C语言有优于其他语言的一系列特点.下面是C语言的主要特点: ( ...

  6. 关于C语言逻辑值的说法错误的是( ),2017年计算机二级c语言题库及答案

    2017年计算机二级c语言题库及答案 [选择题] 1). 关于C语言的变量,以下叙述中错误的是( ) A.所谓变量是指在程序运行过程中其值可以被改变的量 B.变量所占的存储单元地址可以随时改变 C.程 ...

  7. c语言二级考试51自学网,2016年最新计算机二级c语言视频教程

    C/C++ 当前位置:主页 > 编程教程 > C/C++ > 2016年最新计算机二级c语言视频教程 2016年最新计算机二级c语言视频教程 教程大小:3.76GB   发布时间:2 ...

  8. c语言作用域有哪两种变量,2017年计算机二级C语言字考点归纳:变量的存储类别、作用域及生存期...

    7.7 变量的存储类别.作用域及生存期 1.变量的存储类别 在C语言中,有两类存储类别:自动类别及静态类别. 有4个与两种存储类别有关的说明符:auto(自动).register(寄存器).stati ...

  9. c语言6字符宽度和小数位数,2017年计算机二级C语言考点复习

    2017年计算机二级C语言考点复习 古话说得好"读书破万卷,下笔如有神",只有积累了一定的经验,才可能提炼出思维的规律,下面是百分网小编为大家整理的2017年计算机二级C语言考点复 ...

最新文章

  1. StringTokenizer类的使用
  2. c++-内存管理-debug_allocator
  3. 从LeetCode 210. Course Schedule II 了解拓扑排序
  4. 甲骨文中国裁员已定,补偿为N+6;VMware联手云平台合作伙伴AsiaPac,闪耀狮城;对标英伟达,寒武纪新货曝光……...
  5. 编程体系结构(02):Java异常体系
  6. 利用IS61LV12816实现DSP28335的内存扩展
  7. 异贝,通过移动互联网技术,为中小微实体企业联盟、线上链接、线上线下自定义营销方案推送。案例32
  8. 20脚的RSIC-V MCU,竟然可以基于FOC开发PMSM电机
  9. DoS和DDoS攻击
  10. 【论文阅读】Multitask Prompted Training Enables Zero-shot Task Generalization
  11. java 迪杰斯特拉_JAVA实现最短距离算法之迪杰斯特拉算法
  12. A Game of Thrones(40)
  13. python-Day5-深入正则表达式--冒泡排序-时间复杂度 --常用模块学习:自定义模块--random模块:随机验证码--time datetime模块...
  14. 华为android9手机短信不提醒设置,华为手机微信不提醒怎么办 华为收不到微信提示信息多种解决方法...
  15. 5G NR PDCP协议(二)
  16. 对文件或文件夹进行删除、移动、windows10重命名等操作时,系统可能提示“操作无法完成,因为其中的文件夹已在另一程序中打开,请关闭该文件或文件夹,然后重试
  17. MongoDB——MongoDB的日常维护
  18. 数字图像处理matlab实践
  19. “因为内存泄漏,我的 M1 MacBook Pro 瘫痪了”
  20. vue视频播放器vue-video-player

热门文章

  1. php mysql 秒杀_redis+PHP实现高并发下秒杀数据入库的问题
  2. 就业技术书文件表格_429页标准指南,教你如何管理工程监理文件资料,丰富图表一看就会...
  3. 美国大学计算机专业排名2014,2014年美国大学本科计算机专业排名
  4. c语言程序设计主编张玉生教材答案,清华大学出版社-图书详情-《Visual Basic程序设计实验指导》...
  5. java音频采样_音频重采样的坑
  6. hystrix原理_面试必问的SpringCloud实现原理图
  7. php 输出可以设置格式文件,php格式输出文件var_export函数实例
  8. hive 导出json格式 文件_hive支持json格式的数据
  9. 基于单片机超声波测距系统的设计_一种基于UWB技术实现的测距防撞系统
  10. python在线解题_20. 有效的括号-----leetcode刷题(python解题)