个人笔记(二)

个人笔记(二)

getchar()从缓冲区获取字符,如果缓冲区为空,则阻塞直至用户输入字符。
2.
char、short自动转换int、float自动转换double
3.
#define宏定义只是做简单的替换,并不占用内存

//这里把PI替换为3.14
#define PI 3.14

宏定义只会做简单的替换,而不会计算优先级问题,则需对单元加上括号

//A,B可以是表达式,如果是表达式,且表达式当中的符号优先级低于 > 号,会导致出来的结果不是我们想要的
#define MAX(A,B) (A > B ? A : B)
//加上括号就行
#define MAX(A,B) ((A) > (B) ? (A) : (B))

#开头 以if开头 必须以endif结尾
#ifdef if = defined如果已经定义
#ifndef = if not defined 如果尚未定义

#ifndef TEST // 等于if define
//#undef TEST 等于 nudefine 
void print_message()
{
    printf("这里是定义的\n");
}
#else
void print_message()
{
    printf("这里是未定义的\n");
}
#endif

一般来说,对于代码当中尚未开发完成的代码,而又可能会导致一些不可预见的问题,但是又不想让程序无法执行 可以加上这样一个预处理指令,代表代码仍需处理

#warning 这里会出现警告
#error 这里会出现错误
//非致命性警告
#pragma warning("这是什么?")

如果使用gcc 文件名 来编译,不会出现内容,需要用 gcc -Wall 文件名来编译(-W 代表warning all代表所有)
在这里插入图片描述
8.

// 显示一段信息
#pragma message("这是一段信息")

直接用gcc 文件名 来编译

<>直接从系统路径当中查找对应的头文件
“”先从当前源文件路径查找,如果查找不到,再到系统源文件路径查找

#include <stdio.h>
#include "stdio.h"

在数组作为函数的参数时,其被转换为指针

结构体存在字节对齐,如果下一个成员无法在有限空间存放,则需要额外的空间存放结构体内部最大的单成员类型的整数倍

#include <stdio.h>

/*
    结构体所占的内存大小
    (1)本身的成员变量类型
     (2) 结构体存在字节对齐 如果下一个成员无法在有限空间存放,则需要额外的空间存放
        结构体内部最大的单成员类型的整数倍
    怎么改变优化字节对齐?
    (1)按照有限空间合理排布成员顺序
    (2)更改字节对齐的方式

    位域的概念 还是优化结构体占内存的方式
    (1)针对于整数类型的成员变量,可以通过位域指定其所占内存位的多少
    (2)无法超过其类型本身的位数 如char 不能超过 8位
*/


// 4 1(3) 8   = 16
struct Person
{
    int number;
    char sex;
    double money;
};

int main(int argc, char const *argv[])
{
    // 结构体的内存
    printf("%lu\n", sizeof(struct Person));

    return 0;
}

运行结果为:16

struct Person
{
    //顺序调换一下
    // 4(4) 8 1(7)  = 24
    int number;
    double money;
    char sex;
};

运行结果为:24

// 字节对齐按照1字节对齐, 无额外空间的方式 ,直接等于所有成员的字节相加
// ‘1’, ‘2’,‘4’, ‘8’, or ‘16’ 字节对齐方式可选值 其实就是基础类型的字节大小

#pragma pack(1) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值