C语言知识点补充

文章目录

  • C语言知识点补充
    • @[toc]
      • **C库函数** `void *memset(void *s, int ch, size_t n)`
      • **C库函数** `void mencpy(void *str1, const void *str2, size_t n)`
      • **C库函数** `void *malloc(size_t size)` 动态内存分配
      • **C库函数** `void free(void *ptr)` 释放内存
      • **C运算符** `sizeof()` 判断变量或数据类型的字节大小。单位(byte)
      • **C库函数** `strlen(const char *str)` 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符
      • **C库函数** `fflush()` 刷新流 stream 的输出缓冲区
      • **C库函数** `scanf`, 从标准输入stdin读取格式化输入.
      • **C库函数** `printf`, 发送格式化输出到标准输出 stdout.
        • 格式字符
        • 转义字符
      • **C库函数** `char *strtok(char s[], const char *delim);`将字符串分割成一个个片段。
      • **C库函数** `int strncmp(const char *str1, const char *str2, size_t n)`字符串比较函数
      • **C库函数** `unsigned long int strtoul(const char *str, char **endptr, int base)`把输入的字符串转换成数字
      • **C库函数** `double floor(double arg)`向下取整;`double ceil(double arg)`向上取整
      • `?:`条件表达式. 如果条件为真?则值为X:否则值为Y
      • `break`跳出当前循环(在switch中是结束掉switch循环)。
      • **关键字**`static`
      • **关键字**`const`
      • **关键字**`struct` 结构体
        • 结构体成员的`.`和`->`
        • 结构体传递时注意点
      • **函数指针** `int(*pFunc)(int, int)`
        • 使用案例:
      • **指针函数** `int *sub(int a, int b)`
      • **数组指针**`int (*pArr)[10]`
        • 使用案例:可以实现对一个多维数组进行逐行移动。
      • **指针数组** `int *ArrP[10]`
        • 使用案例:使用指针数组设计一个存放字符串的表。PS:一般在数组末尾加上一个NULL元素,来判断数组是否到了结尾。
      • `#` 把宏参数变为一个字符串.
      • `##` 为宏提供一种连接实际参数的手段.
        • 实际运用 思路:用单独一个OSD2Image_Table.h文件封装起来,供客户等添加图片信息. (优点: 便捷、隔离)
      • 链表与数组的区别
      • 关于几个debug用到的宏
      • ?操作符的结合性都是从右向左的
      • 字符串的定义
      • ???#pragma pack()
      • 函数的参数之形参与实参
        • 参数的传递
          • 思考的例子
      • 过程类型的函数 有return的函数
      • 存储类型与存储区关系
      • \_\_attribute\_\_
        • section

C库函数 void *memset(void *s, int ch, size_t n)

将s中当前位置后面的n个字节用 ch 替换并返回 s 。size_t n一般用sizeof()确定多少个字节。ch是赋给buffer的值。


C库函数 void mencpy(void *str1, const void *str2, size_t n)

从存储区str2复制n个字节到存储区str1。一般参数n用sizeof(str2)表示


C库函数 void *malloc(size_t size) 动态内存分配

返回值是一个指针,指向已经分配大小的内存,如果请求失败则返回NULL。


C库函数 void free(void *ptr) 释放内存

ptr–指针指向一个要释放内存的内存块


C运算符 sizeof() 判断变量或数据类型的字节大小。单位(byte)


C库函数 strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符

返回字符串的长度


C库函数 fflush() 刷新流 stream 的输出缓冲区



C库函数 scanf, 从标准输入stdin读取格式化输入.

类型说明符

类型 合格输入 参数的类型
%a %A 读入一个浮点值 float *
%c 单个字符:读取一个字符 char *
%d 十进制整数:数字前面的 + 或 - 号是可选的。 int *

C库函数 printf, 发送格式化输出到标准输出 stdout.

格式字符

格式字符 意义
d 以十进制形式输出带符号整数(正数不输出符号)
s 输出字符串
x,X 以十六进制形式输出无符号整数

转义字符

转义字符 意义
\b 退格(BS), 将当前位置移到前一列
\f 换页(FF), 将当前位置移到下页开头
\n 换行(LF), 将当前位置移到下一行开头
\r 回车(CR), 将当前位置移到本行开头
\t 水平制表(HT)
\v 垂直制表(VT)
? 输出? .用于书写连续多个问号时使用
printf("请输入三个字符:");
scanf("%c%c%c",&a,&b,&c);
printf("%d,%d,%d\n",a,b,c);

C库函数 char *strtok(char s[], const char *delim);将字符串分割成一个个片段。

参数s指向欲分割的字符串,参数delim则为分割字符串中包含的所有字符。当strtok()在参数s的字符串中发现参数delim中包含的分割字符时,则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回指向被分割出片段的指针。

#include <string.h>
#include <stdio.h>
int main () {char str[80] = "This is - www.runoob.com - website";const char s[2] = "-";char *token;token = strtok(str, s);//返回串中第一个s前的字符串/* 继续获取其他的子字符串 */while( token != NULL ) {printf( "%s\n", token );token = strtok(NULL, s);//结果返回分割依据后面的字串//如果,s为空值NULL,则函数保存的指针SAVE_PTR在下一次调用中将作为起始位}   return(0);
}

C库函数 int strncmp(const char *str1, const char *str2, size_t n)字符串比较函数

str1和str2比较,n为要比较的最大字符数。返回值< 0,str1 < str2; 返回值> 0,str1 > str2; 返回值= 0,str1 = str2 。


C库函数 unsigned long int strtoul(const char *str, char **endptr, int base)把输入的字符串转换成数字

str:字符串的起始地址。endptr: 返回字符串有效数字的结尾地址(例1234fe56则返回f的地址)。base:转化基数 (2~36|0),用来代表str采用多少base进制。


C库函数 double floor(double arg)向下取整;double ceil(double arg)向上取整


?:条件表达式. 如果条件为真?则值为X:否则值为Y


break跳出当前循环(在switch中是结束掉switch循环)。

continue跳过循环体中剩余的语句而强行执行下一次循环。

return返回主调函数。


关键字static

  • 修饰静态局部变量 存储于静态内存中的变量在程序的整个执行过程中将一直保留它们的值。
  • 限制函数和数据定义的作用域 抽象数据类型(abstract data type)这个技巧也被称为黑盒.

关键字const

  1. 修饰变量,声明变量为只读特性,保护变量值以防被修改。此外还可以节约空间的目的,此变量保存到符号表中,无需读写内存,程序执行效率也会提高。

    const int I = 5;//== int const I = 5通常建议采用第一种声明

  2. 修饰数组。

  3. 修饰指针,修饰指针有两种形式,一种是用来限定指向的值不能被修改,另一种是限定指针不可更改。

    /*记忆窍门 const在'*p'前,意思是修饰'*p'这个值,而这个'*p'的意思是指向的值const在'p'前,意思是修饰'p'这个值,而这个'p'的意思是指针
    */
    const int *p1 = &i;//限定指向的值不可改变。
    int *const p2 = &j;//限定指针不可改变。
    
  4. 修饰函数参数,const形参防止被函数内部修改。


关键字struct 结构体

结构体成员的.->

  1. 结构体成员的直接访问, 通过(.)操作符. 左操作数就是结构体变量的名字, 右操作数就是需要访问的成员的名字.
  2. 结构体成员的直接访问, 通过(->)操作符. 左操作数必须是一个指向结构的指针, 右操作数就是需要访问的成员的名字.

struct COMPLEX *cp;
通过(*cp).f调用里面的f成员. 但是很麻烦,所以C语言提供了(->)操作符, 所以变成了cp->f

结构体传递时注意点

尽量或者必须做到,传递一个指向结构体的指针而不是一个结构体


函数指针 int(*pFunc)(int, int)

指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么指向这个函数的函数指针便是指向这个地址。函数指针主要有两个作用:用作调用函数和做函数的参数。

使用案例:

typedef int(*pFunc)(int,int);
pFunc pv(int,int);//pv 是一个函数指针

int AddTwoNumb(int a,int b){return a+b;}

int main()

{

pv = AddTwoNumb;//pv存放AddTwoNumb函数的地址

int a,b;

sum = (*pv)(a,b);//sum = 函数AddTwoNumb return的值,若是不带参数的的函数则调用一次函数(调用方式:sum = (*pv)

Gary的一些C语言知识点快速补充相关推荐

  1. 如何快速复习C语言知识点

    如何快速复习C语言知识点 如何快速复习C语言知识点 如何快速复习C语言知识点 1. 数据类型 1.1 基本类型 1.2 构造类型 1.3指针类型 2.输入输出和运算符 3.控制语句 3.1选择结构 3 ...

  2. Java虚拟机知识点快速复习手册(上)

    前言 本文快速回顾了常考的的知识点,用作面试复习,事半功倍. 上篇主要内容为:虚拟机数据区域,垃圾回收 下篇主要内容为:类加载机制 面试知识点复习手册 全复习手册文章导航 Csdn全复习手册文章导航: ...

  3. 计算机网络基础知识点快速复习手册

    前言 本文快速回顾了计算机网络书本中常考的的知识点,用作面试复习,事半功倍. 主要内容有:计算机网络体系结构,TCP与UDP,UDP/TCP实现DEMO代码 面试知识点复习手册 全复习手册文章导航 全 ...

  4. Java并发知识点快速复习手册(下)

    前言 本文快速回顾了常考的的知识点,用作面试复习,事半功倍. 面试知识点复习手册 已发布知识点复习手册 Java基础知识点面试手册 快速梳理23种常用的设计模式 Redis基础知识点面试手册 Java ...

  5. Java并发知识点快速复习手册(上)

    前言 本文快速回顾了常考的的知识点,用作面试复习,事半功倍. 面试知识点复习手册 已发布知识点复习手册 Java基础知识点面试手册 快速梳理23种常用的设计模式 Redis基础知识点面试手册 Java ...

  6. Microbiome:NGLess语言实现快速可重复分析宏基因组的流程NG-meta-profiler

    文章目录 NG-meta-profiler:使用NGLess(一种领域专用语言)快速处理宏基因组 Peer Bork的介绍和相关文章 日报 摘要 背景 结果 结论 主要结果 图1. NG-meta-p ...

  7. ASP.NET MVC 3 Razor 多国语言参考解决方案 补充四

    ASP.NET MVC 3 Razor 多国语言参考解决方案 补充四 转自 http://www.cnblogs.com/think8848/archive/2011/07/05/2098464.ht ...

  8. P4语言编程快速开始 实践二

    参考:P4语言编程快速开始 上一篇系列博客:P4语言编程快速开始 实践二 Demo 2 本Demo所做的修改及实现的功能: 为simple_router添加一个计数器(counter),该计数器附加( ...

  9. 2017二级c语言成绩,2017全国计机等级考试二级C语言知识点超全整(打印版).docx

    2017全国计机等级考试二级C语言知识点超全整(打印版) 全国计算机 等级考试 目录 第一部分 公共基础知识 第 1 章 算法与数据结构1 HYPERLINK \l "_TOC_250068 ...

  10. C语言数字3转变字符 3 程序,大学c语言知识点总结

    大学c语言知识点总结 C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言.一起来看看大学c语言知识点总结吧! 大学c语言知识点总 ...

最新文章

  1. 【BZOJ】3542: DZY Loves March
  2. 从条纹边框的实现谈盒子模型(转)
  3. Google推出HTML 5练兵场 提供详尽代码示例,互联网营销
  4. 成功解决PermissionError: [WinError 5] 拒绝访问 \lib\\site-packages\\h5py\\_errors.cp38-win_amd64.pyd‘
  5. flask找不到css_Flask干货:访问数据库——Flask-SQLAlchemy初始化
  6. 邮件系统磁盘监控脚本
  7. maven依赖管理_依赖管理和Maven
  8. NGINX原理 之 SLAB分配机制(转)
  9. iOS之UITraitCollection
  10. 2020 计蒜之道 预赛 第一场 爆零记
  11. Unity 发布hololens注意事项
  12. 从多态性谈动态联编的必要性(c++)
  13. melodic版本ROS使用anaconda中的python
  14. 《社会心理学》第一章读书笔记
  15. tbase安全和脱敏
  16. Windows10无法启动防火墙
  17. 复合函数的极限与连续
  18. 二级分销商城简单的设计方式
  19. Tensorflow中的masking和padding
  20. OSChina 周六乱弹 —— 想通过么?收费!!!

热门文章

  1. 2022年黑客书籍推荐
  2. 如何把很多照片拼成一张照片_把很多小照片拼成一张大照片是怎么做的?
  3. 《猎头局中局》——摘要
  4. 多任务深度强化学习入门
  5. Xcode 中设置APP的图标(Icon)和启动页面(Launch Screen)
  6. Oracle技巧之 desc+表名
  7. python地图 两点距离_使用python计算google地图中两点之间的距离
  8. ECSHOP和SHOPEX快递单号查询中通插件V8.6专版
  9. Silverlight实用窍门系列:1.Silverlight读取外部XML加载配置---(使用WebClient读取XAP包同目录下的XML文件))【附带实例源码】...
  10. 同属开源Linux 移动市场MeeGo独到之秘