关键字与结构体以及文件操作总结

字符串函数:

常量字符串:  只要是双引号引起来的字符序列


ps:  常量字符创存储在常量区, 常量区用户只能读不能写
 

1、在c 语言中, 使用字符数组存储字符串的


2、使用指针变量接收的是一个常量字符串的起始地址,字符串仍然存储在常量区
   使用字符数组接收一个常量字符串, 直接将常量字符串存储到数组中,可以修改字符串的值!

strcpy:  将src指向的字符串拷贝到dest指向的内存中, 包括尾零一起拷贝过去
strlen:计算字符串可见字符的个数,不包含尾零
strcmp:比较两个字符串大小,相等为0,前大于后为正数否则为负数。
memcpy:从存储区 str2复制 n个字节到存储区 str1。
strcat:将第二个字符串粘贴到第一个字符串‘\0’处;

struct结构体:

1、定义结构体:本质就是构造数据类型, 可以理解成一张图纸


2、定义结构体语法:

struct  结构体名称
{
    类型   成员1;
    类型   成员2;
    。。。
    类型   成员n;
};

3、定义结构体变量:

struct 结构体名称   变量名;


4、如何访问结构体变量中的成员:  .
结构体变量.成员名称:  表示结构体变量中的某个成员


5、没有名称的结构体其他地方不能使用,只能定义结构体的同时定义变量!!!

结构体对齐原则:

1、每一个成员按照自己的字节数对齐

2、最后总的字节数是最大对齐数的整倍,如果不是,加到第一个整数倍为止

3、结构体的对齐数就是最大成员的对齐数

4、如果有成员是数组,则按照每一个元素的大小对齐


ps  :  成员按照从小到大的顺序排列是最节省空间的!!!!


套结构体: 在一个结构体中组合了另一种结构体类型的成员变量


注意事项:

1、定义结构体时,每一个成员的类型必须是已经存在的

2、如果A结构体中嵌套了B类型的结构体成员变量,B结构体需要在A结构体之前定义

3、每一个结构体变量只能访问自己的成员,如果是嵌套结构体, 首先访问嵌套的结构体成员变量, 
   然后再访问它的成员,需要一级一级的访问

关键字


ypedef:  给已经存在的数据类型取别名

语法:  typedef   类名名称   别名;

头文件包含:

1、源文件  ,  xx.c, 存放函数具体实现的过程

2、头文件,  xx.h ,  存放对应模块的函数声明 、结构体定义、宏定义、全局变量的声明

3、一个模块包含两部分:  源文件+头文件,  文件一样,后缀名不同


4、如果包含C 库或者系统的头文件, 使用  <>, 
   如果包含自己写的头文件,使用  “”


5、如何防止头文件重复包含, 有两种方法:
   (1) #ifndef   _头文件名称大写_H
       #define   _头文件名称大写_H
          头文件内容..
       #endif

    (2)  pragma once

6、如果头文件和源文件不在同一个路径下,如何包含:
    (1)包含头文件时,写清楚具体的路径
        #include "具体路径"

    (2)编译时提供头文件目录所在的路径
       gcc   xx.c  -o   xx   -I   头文件目录路径

内存四区:

内存四区:


    栈区:  存储临时变量, 局部变量、 形参 、保护现场

    堆区:   是由程序员自己管理, 申请空间:malloc   释放:free

    数据段:   存储全局变量/静态变量/常量
             未初始化数据段:未初始化的全局变量和静态变量, 默认初始化为0
             初始化数据段:初始化的全局变量和静态变量
             常量区:   常量,  const +静态变量/全局变量,  只读的

    正文段:  运行的代码    ,  只读的

malloc函数:用户向堆申请空间;

p=(p数据类型指针)malloc(p数据类型);
注意事项:

1、内存越界

2、内存泄露

3、不要二次释放,释放一次就可以了

4、释放完内存后,让指针指向NULL

static:

1、修饰变量: 静态变量, 生存期: 程序开始-----》程序结束
                        作用域: 静态局部变量, 定义函数内部
                                静态全局变量,  定义本  .c 文件内部


2、修饰函数: 内部函数, 只能在定义的文件内部调用

举:  定义一组常量

语法:
enum  名称
{
    常量1,
    常量2,
    常量3,
    。。。
    常量n,

};

ps  :默认常量值从0开始,后面依次递增

     可以使用gdb常看枚举值 :   p  \d   常量名称

文件操作:
1、打开文件
   fopen

FILE *fopen(const char *pathname, const char *mode);

参数:

pathname:  文件路径

mode:  打开模式,  文本文件:   r/w/a,   二进制文件: rb/wb/ab

返回值:
成功: 返回有效的地址
失败:  NULL

2、读写文件
   二进制读写:fread/fwrite

   文本读写:  fscanf/fprint

3、关闭文件
   fclose

单链表
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值