400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

读书笔记-C语言关键字-创新互联

001 关键字

2. 关键字

2.1. auto(最宽宏大量的关键字)

2.2. register(最快的关键字)

2.3. static (最名不符实的关键字)

2.4. short、int、long、char、float、double(基本数据类型)

读书笔记-C语言关键字

成都创新互联是一家专业提供轮台企业网站建设,专注与网站设计制作、成都网站设计成都h5网站建设、小程序制作等业务。10年已为轮台众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。

2.5. sizeof (最冤枉的关键字)

2.6. signed unsigned 关键字

#include 
#include 

int main()
{
    signed char a[1000];
    int i = 0;

    for (i = 0; i < 1000; i++)
    {
        a[i] = -1 - i;
    }
    printf("%d\n", strlen(a));

    return 0;
}

当 i = 128 的时候,a[128] = -1 - 128 = -129 ,signed char 的取值范围是 -128~127,所以超出了范围,-129 源码: 1 1000 0001 ,补码:1 0111 1111 ,低 8 位 0111 1111 ,即 127。

当 i = 255 的时候,a[255] = -1 - 255 = -256 , -256 的原码 11 0000 0000 补码:11 0000 0000 ,低 8 位全为 0, strlen 遇到 '\0' 就结束,所以上述代码输出 255。

所以,char 类型如果直接使用就用来表示字符,如果加了 signed 和 unsigned 限定符的话就用来表示数字。

2.7. if else 组合

bool b = FALSE;

if(b)
    printf("TRUE");
if(!b)
    printf("FALSE");

上面这种写法是值得推荐的,其他方式会有问题。

2.8. switch case 组合

当嵌套比较少量的分支的时候可以使用 if else 组合,但是当嵌套的分支多的时候就要使用 switch case 组合了,但是也不要刻意去创造一个 switch 变量。

2.9. do while for 关键字

2.10. goto 关键字

goto 关键字可以在代码中灵活的跳转,存在很大的争议,有的建议慎用 goto ,有的建议不要用。我觉得用得好还是可以用。

int *p = NULL;
...
goto error;
...
error:
    return -1;

2.11. void 关键字

void *p = NULL;
int *p_int = NULL;
p = p_int;    //不会报错,是正确的
p_int = p;    //报错,是错误的

2.12. return 关键字

2.13. const 关键字

读书笔记-C语言关键字

先忽略类型,看 const 离谁近就修饰谁

const int *p;           // const *p ,修饰 *p , p 可以改变, p 指向的内容不可变
int const *p;           // const *p ,同上
int * const p;          // * const p ,修饰 p,p 不可以改变,p 指向的内容可以改变
const int * const p;    // const * const p ,第一个 const 修饰 *p,第二个 const 修饰 p,所以 p 和 p 指向的内容都不能改变

2.14. volatile 最易变的关键字

读书笔记-C语言关键字

在这里 volatile 只是告诉编译器 a 的值可能会被改变,需要访问时每次都要重新到内存中去取。

2.15. extern 最会戴帽子的关键字

2.16. struct 关键字

空结构体占多大内存?大多数编译器是 1,gcc 是 0。所以不要太相信书本上的东西,一定要自己亲自验证。

typedef struct st_type{
    int i;
    a[0];
}type_a;
//有些编译器会报错,可以改成
typedef struct st_type{
    int i;
    int a[];
}type_a;
//可以使用下面的代码为柔性数组分配内存,但是分配好之后使用 sizeof 计算结构体的大小依然是不包含柔性数组所占的内存的。
type_a *p = (type_a *)malloc(sizeof(type_a) + 100 * sizeof(int));

//记得用完之后要 free
free(p);

读书笔记-C语言关键字

2.17. union 关键字

union {
        int i;
        char ch;
}c;

c.i = 1;

//这时候 ch 只需要一个字节存储,在低地址,如果 ch 的值等于 1, 说明 i 的值得低字节 1 存储在低地址,是小端模式。Ubuntu、Windows 等 x86 架构都是小端模式。
int main()
{
    int a[5] = { 1, 2, 3, 4, 5 };
    int *p1 = (int *)(&a + 1);
    int *p2 = (int *)((int)a + 1);
    printf("%x %x\n", p1[-1], *p2);

    return 0;
}
// 5 2000000 小端模式 大端模式 5 100

2.18. enum 关键字

enum enum_type_name{
    ENUM_CONST_1,
    ENUM_CONST_2,
    ENUM_CONST_3,
    ...
    ENUM_CONST_n
} enum_variable_name;

2.19. typedef 关键字,最伟大的缝纫师

typedef struct student{
    int age;
    char name;
} stu_1, *stu_2;

const stu_2 student_1;    // 其实是 const (struct student *)student_1; 所以 修饰的是 student_1 本身,而不是指向的内容
stu_2 const student_2;    // 其实是 (struct student *)const student_2; 所以 修饰的也是 student_2 这个指针本身,而不是指向的内容
#defien INT32 int
typedef int INT32_t

unsigned INT32 i = 10;    //没问题,只是替换
unsigned INT32_t j = 10;  //错误,不支持

#defien PCHAR char*
typedef char* pchar

PCHAR ch2, ch3;    //ch2 是 char * 类型,ch3 却是 char 类型
pchar ch3, ch5;    //ch4, ch5 都是 char * 类型

读书笔记-C语言关键字

3. 总结

不复习不知道,一复习吓一跳,原来 C语言 关键字还有这么多知识点,以前也没怎么注意,当然不止这些,我只是记录了我认为比较重要而且容易搞混淆的。

如果你觉得我的读书笔记对你有用,可以关注微信公众号 kalier 哦,最新的文章和读书笔记都将在这里首发。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页名称:读书笔记-C语言关键字-创新互联
网站地址:http://www.bluegullmedia.com/article/ccesse.html

其他资讯

让你的专属顾问为你服务

0.0538s