23/3/3学习记录(C语言复习-3)

来源于https://www.runoob.com/cprogramming/c-structures.html

1. C字符串

  • strcat( ) 函数
  • 原型:extern char *strcat(char *dest, const char *src);
  • 头文件:<string.h>
  • 功能:把src所指向的字符串(包括“\0”)复制到dest所指向的字符串后面(删除*dest原来末尾的“\0”)。要保证*dest足够长,以容 纳被复制进来的*src。*src中原有的字符不变。返回指向dest的指针。
  • strchr( ) 函数
  • 原型:char *strchr(const char *str, int c)
  • 头文件:<string.h>
  • 功能:在参数所指向的字符串中搜索第一次出现字符(一个无符号字符)的位置。返回一个指向该字符串中第一次出现的字符的指针,如果字符串中不包含该字符则返回NULL空指针。
  • strstr( ) 函数
  • 原型:string strstr( string1,string2)
  • 头文件:<string.h>
  • 功能:strstr返回一个指针,指向string2在string1中首次出现的位置。

2. C结构体

    struct tag { 
    member-list
    member-list 
    member-list  
    ...
} variable-list ;
struct tag *struct_pointer;//定义结构体指针
struct_pointer = &variable-list;//可以在上述定义的指针变量中存储结构变量的地址。为了查找结构变量的地址,把 & 运算符放在结构名称的前面
struct_pointer->member-list;//为了使用指向该结构的指针访问结构的成员,使用 -> 运算符

tag 是结构体标签。

member-list 是标准的变量定义,比如 int i; 或者 float f;,或者其他有效的变量定义。

variable-list是 结构变量,定义在结构的末尾,最后一个分号之前,可以指定一个或多个结构变量。

3. C共用体

union [union tag]
{
   member definition;
   member definition;
   ...
   member definition;
} [one or more union variables];

可以在同一内存空间存储不同类型的数据,但是同一时间只能让一个成员带有值。空间大小为成员中所占最大的空间。

4. C中typedef和#define

#define 是 C 指令,用于为各种数据类型定义别名,与typedef类似,但是它们有以下几点不同:

typedef仅限于为类型定义符号名称,#define不仅可以为类型定义别名,也能为数值定义别名,比如您可以定义 1 为 ONE。

typedef是由编译器执行解释的,#define语句是由预编译器进行处理的。

5. C文件读写

6. C预处理器/预处理命令

C预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。把 C 预处理器(C Preprocessor)简写为 CPP

指令

描述

#define

定义宏

#include

包含一个源代码文件

#undef

取消已定义的宏

#ifdef

如果宏已经定义,则返回真

#ifndef

如果宏没有定义,则返回真

#if

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

#else

#if 的替代方案

#elif

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

#endif

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

#error

当遇到标准错误时,输出错误消息

#pragma

使用标准化方法,向编译器发布特殊的命令到编译器中

#include <stdio.h> 指令告诉 CPP 从中获取 stdio.h,并添加文本到当前的源文件中。

#inlcude "myheader.h" 告诉 CPP 从本地目录中获取 ,并添加内容到当前的源文件中。

预定义宏 ANSI C 定义了许多宏。在编程中可以使用这些宏,但是不能直接修改这些预定义的宏。

__DATE__

当前日期,一个以 "MMM DD YYYY" 格式表示的字符常量。

__TIME__

当前时间,一个以 "HH:MM:SS" 格式表示的字符常量。

__FILE__

这会包含当前文件名,一个字符串常量。

__LINE__

这会包含当前行号,一个十进制常量。

__STDC__

当编译器以 ANSI 标准编译时,则定义为 1。

预处理器运算符

  • 宏延续运算符(\) 一个宏通常写在一个单行上。但是如果宏太长,一个单行容纳不下,则使用宏延续运算符(\)
  • 字符串常量化运算符(#) 在宏定义中,当需要把一个宏的参数转换为字符串常量时,则使用字符串常量化运算符(#)
  • 标记粘贴运算符(##) 宏定义内的标记粘贴运算符(##)会合并两个参数。它允许在宏定义中两个独立的标记被合并为一个标记。

7. C内存管理

  • malloc( ) 函数:用于动态分配内存。它接受一个参数,即需要分配的内存大小(以字节为单位),并返回一个指向分配内存的指针。
  • free( ) 函数:用于释放先前分配的内存。它接受一个指向要释放内存的指针作为参数,并将该内存标记为未使用状态。
  • calloc( ) 函数:用于动态分配内存,并将其初始化为零。它接受两个参数,即需要分配的内存块数和每个内存块的大小(以字节为单位),并返回一个指向分配内存的指针。
  • realloc( ) 函数:用于重新分配内存。它接受两个参数,即一个先前分配的指针和一个新的内存大小,然后尝试重新调整先前分配的内存块的大小。如果调整成功,它将返回一个指向重新分配内存的指针,否则返回一个空指针。
  • sizeof 运算符:用于获取数据类型或变量的大小(以字节为单位)。
  • 指针运算符:用于获取指针所指向的内存地址或变量的值。
  • & 运算符:用于获取变量的内存地址。
  • 运算符:用于获取指针所指向的变量的值。
  • memcpy( ) 函数:用于从源内存区域复制数据到目标内存区域。它接受三个参数,即目标内存区域的指针、源内存区域的指针和要复制的数据大小(以字节为单位)。
  • memmove( ) 函数:类似于 memcpy() 函数,但它可以处理重叠的内存区域。它接受三个参数,即目标内存区域的指针、源内存区域的指针和要复制的数据大小(以字节为单位)。

8. 排序算法

c编程学习记录 文章被收录于专栏

为了华为od机试刷题学习记录

全部评论

相关推荐

见见123:简历没有啥问题,是这个社会有问题。因为你刚毕业,没有工作经历,现在企业都不要没有工作经历的。社会病了。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务