《C Primer Plus》第六版笔记--7~10章
第七章 C控制语句:分支和跳转
if else 用法
if (expression) //expression为真时,运行花括号内语句
{
statement1
}
else //不为真时,运行else的花括号内语句
{
statement2
}
ctype.h系列的字符函数#include <stdio.h>
#include <ctype.h> //包含isalpha()的函数原型
int main ()
{
char ch; while ((ch = getchar()) != '\n')
{
if (isalpha (ch)) //检测输入输入字符是否为字母
putchar(ch + 1);
else
putchar (ch);
}
putchar (ch); getchar();
getchar(); return 0;
}
运行程序,输入 Hello! 输出的就是 Ifmmp!
ctype.h头文件中字符测试函数
| 函数名 | 如果是下列参数时,返回值为真 |
|---|---|
| isalnum | 字母数字(字母或数字) |
| isalpha | 字母 |
| isblank | 标准的空白字符(空格、水平制表符或换行符)或任何其他本地化指定为空白的字符 |
| iscntrl | 控制字符,如Ctrl+B |
| isdigit | 数字 |
| isgraph | 除空格外的任意可打印字符 |
| islower | 小写字母 |
| isprint | 可打印字符 |
| ispunct | 标点符号(除空格或字母数字字符外的任何可打印字符) |
| isspace | 空白字符(空格、换行符、换页符、回车符、垂直制表符、水平制表符或其他本地化定义的字符) |
| isupper | 大写字母 |
| isxdigit | 十六进制字符 |
逻辑运算符
3种逻辑运算符
| 逻辑运算符 | 含义 |
|---|---|
| && | 与 |
| || | 或 |
| ! | 非 |
- 条件运算符:?:
x = (y< 0) ? -y : y;
如果y<0,则x = -y,否则x = y、
第八章 字符输入/输出和输入验证
getchar()和putchar()都是单字符I/O#include <stdio.h> int main()
{
char ch; while ((ch = getchar()) != '#')
putchar(ch); getchar(); return 0;
}
输入Hello,I'm # here,程序读取到#就停止,后面的内容就不能读取。
在getchar();的地方设置断点并验证

- 输入验证(防止使用者输错),提前做好预防
第九章 函数
- 简单函数
#include <stdio.h> #define NAME "GIGATHING, INC"
#define ADDRESS "101 Megabuck Plaza"
#define PLACE "Megapolis, CA 94904"
#define WIDTH 40 void starbar(void); int main()
{
starbar();
printf("%s\n", NAME);
printf("%s\n", ADDRESS);
printf("%s\n", PLACE);
starbar(); getchar(); return 0;
} void starbar(void) //第一个void 表示函数为void类型,没有返回值;第二个void表示函数不带参数(形参)
{
int count; //count为该函数内的局部变量,即可以在starbar函数外的地方再次定义同名变量 for (count = 1; count <= WIDTH; count++)
putchar('*');
putchar('\n');
}
输出结果:

starbar标识符出现三次,三个作用:函数原型告诉编译器函数的类型,函数调用表示在此处执行函数,函数定义定义了函数内语句的功能
函数递归
#include <stdio.h> void up_and_down(int); int main(void)
{
up_and_down(1); getchar(); return 0;
} void up_and_down(int n)
{
printf("Level %d: n location %p\n", n, &n); // #1
if (n < 4) up_and_down(n + 1);
printf("LEVEL %d: n location %p\n", n, &n); // #2
}
输出结果:

注:每次函数调用的n值都是不同的,且每次调用之后都会返回,执行后面的语句
大概就是这样子
第十章 数组和指针
sizeof计算元素个数#include <stdio.h> int main(void)
{
const int days[] = { 31,28,31,30,31,30,30,31,30,31,30,31 };
int index; for (index = 0; index < sizeof days / sizeof days[0]; ++index)
printf("Month %d has %d days.\n", index + 1, days[index]); getchar(); return 0;
}
注:
sizeof days是在计算整个数组的大小,sizeof day[0]是在计算一个int元素的大小
指针与数组(一维)
#include <stdio.h>
#define MONTH 12 int main(void)
{
const int days[MONTH] = { 31,28,31,30,31,30,30,31,30,31,30,31 };
int index; for (index = 0; index < MONTH; ++index)
printf("Month %2d has %d days.\n", index + 1, *(days + index)); getchar(); return 0;
}
*(days + index)相当于days[index]
const的其他内容
const int days[MONTH] = { 31,28,31,30,31,30,30,31,30,31,30,31 };
起到保护数组内容的作用,更改days数组内的值会发生编译错误int days[MONTH] = { 31,28,31,30,31,30,30,31,30,31,30,31 };
const int *ptr = days;
这样的话就可以更改days数组的内容,但是ptr指针就是固定指向days数组
指针和多维数组
#include <stdio.h> int main()
{ int a[4][2] = { {2,4},{6,8},{1,3},{5,7} }; int (*ptr)[2] = a; //括号是必须的! int i, v;
for (i = 0; i < 4; ++i)
{
for (v = 0; v < 2; ++v)
{
printf("%d\t", *(*(ptr + i) + v));
}
putchar('\n');
} getchar(); return 0;
}
输出结果:

注:C语言中二维数组长这样:
不出意外的话,这应该是我对这本书的最后的笔记了,后面好多都是的看不懂的理论,也就没办法做出来笔记......
感兴趣的朋友可以自行买书回来看一下呀
《C Primer Plus》第六版笔记--7~10章的更多相关文章
- C++ Primer Plus 第六版笔记
C++ Primer Plus 第六版笔记 关于对象声明的思考 转自:http://www.cnblogs.com/weiqubo/archive/2009/11/02/1930042.html C+ ...
- 《C Primer Plus》第六版笔记--4~6章
目录 第四章 字符串和格式化输入/输出 第五章 运算符.表达式和语句 第六章 C控制语句:循环 虽然匆匆忙忙,但还是要做笔记,虽然大概都知道...... 挑一些容易忘记的地方 第四章 字符串和格式化输 ...
- 《C Primer Plus》第六版笔记--1~3章
目录 第一章 初识C语言 1 使用C语言的7个步骤 1.1 定义程序目标 1.2 设计程序(功能实现) 1.3 编写代码 1.4 编译 1.5 运行程序 1.6 测试和调试程序 1.7 维护和修改代码 ...
- <NET CLR via c# 第4版>笔记 第10章 属性
10.1 无参属性 10.1.1 自动实现的属性 10.1.2 合理定义属性 属性可以只读或只写,而字段访问总是可读和可写的(一个例外是 readonly 字段仅在构造器中可写). 属性方法可能抛出异 ...
- c++ primer plus 第6版 部分三 9章 - 章
c++ primer plus 第6版 部分三 9章 - 章 第9章 内存模型和名称空间 1.单独编译 ...
- 《C++Primer》第五版习题答案--第一章【学习笔记】
C++Primer第五版习题解答---第一章 ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2022/1/7 第一章:开始 练习1.3 #includ ...
- 《C++Primer》第五版习题答案--第二章【学习笔记】
C++Primer第五版习题解答---第二章 ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/9 第二章:变量和基本类型 练习2.1: 类 ...
- c++ primer plus 第6版 部分二 5- 8章
---恢复内容开始--- c++ primer plus 第6版 部分二 5- 章 第五章 计算机除了存储外 还可以对数据进行分析.合并.重组.抽取.修改.推断.合成.以及其他操作 1.for ...
- c++ primer plus 第6版 部分一 1-4章
c++ primer plus 第6版 源代码 ---编译器---目标代码---连接程序(启动代码--库代码)---可执行代码 源代码扩展名:c cc cxx C cpp ...
随机推荐
- win10 Celery异步任务报错: Task handler raised error: ValueError('not enough values to unpack (expected 3, got 0)
示例代码如下: from celery import Celery app = Celery('tasks', backend='redis://×××:6379/1', broker='redis: ...
- iOS开发 将html 富文本文字 转换成oc 的富文本
- (NSMutableAttributedString *)mf_htmlAttribute:(NSString *)htmlString{ htmlString = [NSString strin ...
- 爬虫---scrapy全站爬取
全站爬取1 基于管道的持久化存储 数据解析(爬虫类) 将解析的数据封装到item类型的对象中(爬虫类) 将item提交给管道, yield item(爬虫类) 在管道类的process_item中接手 ...
- SSM框架整合(Spring、SpringMVC、Mybatis)
#毫无疑问我们肯定是使用Spring去整合SpringMVC和Mybatis,在整合过程中我们首先要让各自的模块实现,然后再去使用Spring整合:比如我先实现Mybatis框架的配置,然后再通过测试 ...
- 帝国CMS灵动标签调用包含指定短语关键词关键字文章的语法
[e:loop={"select * from phome_ecms_news where title like '%这里是关键词%' and checked=1 order by news ...
- Vue使用PostCSS 插件和如何使用sass及常用语法
为什么要使用PostCss 转换 px 单位的插件有很多,知名的有 postcss-px-to-viewport 和 postcss-pxtorem,前者是将 px 转成 vw,后者是将 px 转成 ...
- 2021.12.21 eleveni的刷题记录
2021.12.21 eleveni的刷题记录 0. 有意思的题 P6701 [POI1997] Genotype https://www.luogu.com.cn/problem/P6701 状压优 ...
- PostgreSQL 数据库备份脚本
PostgreSQL 数据库备份脚本 #!/bin/bash # PG家目录(/opt/postgresql/pg96/) PG_HOME=${PGHOME} # pg数据库连接信息 PG_HOST= ...
- XCTF练习题---MISC---pure-color
XCTF练习题---MISC---pure-color flag:flag{true_steganographers_doesnt_need_any_tools} 解题步骤: 1.观察题目,下载附件 ...
- 网络爬虫、Pandas
网络爬虫.Pandas Pandas 是 Python 语言的一个扩展程序库,用于数据分析. Pandas 是一个开放源码.BSD 许可的库,提供高性能.易于使用的数据结构和数据分析工具. Panda ...

