c语言 数组、字符串的形参格式_华中师范大学计算机考研874C语言笔记(一)
运算符优先级
- 自右向左记忆口诀
- 条件赋值自增减(?: =/+=/-= ++ -- )
- 指针取址按位反 (* & ~)
- 内存非负强制转 (sizeof ! - (type))
- define 前面的#标志着define是一个【预处理命令】而不是C语句。
- 高字节在【高地址】存储单元,低字节在【低地址】存储单元。
- 16位的内存中-65537与-1在内存中的值是一样的。
- 16位的内存中-65535与1在内存中的值是一样的。
- 整型常量后可加字母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语言笔记(一)相关推荐
- c语言中apos是什么头文件,华中科技大学计算机学院C语言程序设计字符串apos;apos;apos;apos;.ppt...
华中科技大学计算机学院C语言程序设计字符串'''' 第3章 基本的标准输入与输出 华中科技大学计算机学院 C语言程序设计 C语言程序设计 主讲教师:周时阳 标准输入输出是指利用标准C提供的输入输出库函 ...
- 计算机考研C语言基础
计算机考研C语言基础 概述 C语言是一门面向过程的.抽象化的通用程序设计语言,广泛应用于底层开发.C语言能以简易的方式编译.处理低级存储器.C语言是役产生少量的机器语言以及不需要任何运行环境支持便 ...
- c语言程序的标识符分类,华中科技大学计算机学院C语言程序设计标识符.PPT
华中科技大学计算机学院C语言程序设计标识符 第2章 数据类型.运算符 和表达式 2.6.6 自增自减运算 运算符表 -- ++ 运算符: 操作数是任意基本类型之变量(或左值表达式),运算结果是: ⑴ ...
- c语言中判断字符串s1大于s2 应当使用,湖北省计算机二级C语言考试
<湖北省计算机二级C语言考试>由会员分享,可在线阅读,更多相关<湖北省计算机二级C语言考试(11页珍藏版)>请在人人文库网上搜索. 1.1.计算机在实现工业自动化中的应用主要是 ...
- 在c语言程序中将数据分为两种,2012年计算机二级C语言考点归纳汇总(一至四章)...
第1章程序设计基本概念考点归纳 1.1 C语言的特点 C语言是近年来非常流行的语言,很多人宁愿放弃已经熟悉的其他语言而改用C语言,其原因是C语言有优于其他语言的一系列特点.下面是C语言的主要特点: ( ...
- 关于C语言逻辑值的说法错误的是( ),2017年计算机二级c语言题库及答案
2017年计算机二级c语言题库及答案 [选择题] 1). 关于C语言的变量,以下叙述中错误的是( ) A.所谓变量是指在程序运行过程中其值可以被改变的量 B.变量所占的存储单元地址可以随时改变 C.程 ...
- c语言二级考试51自学网,2016年最新计算机二级c语言视频教程
C/C++ 当前位置:主页 > 编程教程 > C/C++ > 2016年最新计算机二级c语言视频教程 2016年最新计算机二级c语言视频教程 教程大小:3.76GB 发布时间:2 ...
- c语言作用域有哪两种变量,2017年计算机二级C语言字考点归纳:变量的存储类别、作用域及生存期...
7.7 变量的存储类别.作用域及生存期 1.变量的存储类别 在C语言中,有两类存储类别:自动类别及静态类别. 有4个与两种存储类别有关的说明符:auto(自动).register(寄存器).stati ...
- c语言6字符宽度和小数位数,2017年计算机二级C语言考点复习
2017年计算机二级C语言考点复习 古话说得好"读书破万卷,下笔如有神",只有积累了一定的经验,才可能提炼出思维的规律,下面是百分网小编为大家整理的2017年计算机二级C语言考点复 ...
最新文章
- StringTokenizer类的使用
- c++-内存管理-debug_allocator
- 从LeetCode 210. Course Schedule II 了解拓扑排序
- 甲骨文中国裁员已定,补偿为N+6;VMware联手云平台合作伙伴AsiaPac,闪耀狮城;对标英伟达,寒武纪新货曝光……...
- 编程体系结构(02):Java异常体系
- 利用IS61LV12816实现DSP28335的内存扩展
- 异贝,通过移动互联网技术,为中小微实体企业联盟、线上链接、线上线下自定义营销方案推送。案例32
- 20脚的RSIC-V MCU,竟然可以基于FOC开发PMSM电机
- DoS和DDoS攻击
- 【论文阅读】Multitask Prompted Training Enables Zero-shot Task Generalization
- java 迪杰斯特拉_JAVA实现最短距离算法之迪杰斯特拉算法
- A Game of Thrones(40)
- python-Day5-深入正则表达式--冒泡排序-时间复杂度 --常用模块学习:自定义模块--random模块:随机验证码--time datetime模块...
- 华为android9手机短信不提醒设置,华为手机微信不提醒怎么办 华为收不到微信提示信息多种解决方法...
- 5G NR PDCP协议(二)
- 对文件或文件夹进行删除、移动、windows10重命名等操作时,系统可能提示“操作无法完成,因为其中的文件夹已在另一程序中打开,请关闭该文件或文件夹,然后重试
- MongoDB——MongoDB的日常维护
- 数字图像处理matlab实践
- “因为内存泄漏,我的 M1 MacBook Pro 瘫痪了”
- vue视频播放器vue-video-player
热门文章
- php mysql 秒杀_redis+PHP实现高并发下秒杀数据入库的问题
- 就业技术书文件表格_429页标准指南,教你如何管理工程监理文件资料,丰富图表一看就会...
- 美国大学计算机专业排名2014,2014年美国大学本科计算机专业排名
- c语言程序设计主编张玉生教材答案,清华大学出版社-图书详情-《Visual Basic程序设计实验指导》...
- java音频采样_音频重采样的坑
- hystrix原理_面试必问的SpringCloud实现原理图
- php 输出可以设置格式文件,php格式输出文件var_export函数实例
- hive 导出json格式 文件_hive支持json格式的数据
- 基于单片机超声波测距系统的设计_一种基于UWB技术实现的测距防撞系统
- python在线解题_20. 有效的括号-----leetcode刷题(python解题)