回味C语言

本文是对C语言的一次深入探讨,涵盖函数特性、声明解析、数组与指针的区别、链接原理等内容。揭示了C语言的精髓,如函数不支持重载、参数传递方式、无符号类型使用建议等,同时深入解析了C语言声明的复杂性和运行时的数据结构。通过对内存管理和链接过程的思考,帮助读者更深入理解C语言。
摘要由CSDN通过智能技术生成

虽然在实际上没怎么使用C语言了,但是看到C语言的书总是忍不住想看一下(喜欢这种至简,却又有着强大能力的语言),读完书随手写的一些笔记,略有些简单。书还是很喜欢的,推荐给大家(C专家编程)

第一章 C:穿越时空的迷雾


  • 原型决定C语言不支持函数重载
//previous definition is here
void overload(int a)
{
    printf("%d\n",a);
}

void overload(double a)
{
    printf("%lf\n",a);
}
  • 参数传递类似于赋值
void assign(char a)
{
    printf("%d\n",a);
}
//指针类型才会出现这种错误
void assignpoint(char *p)
{
    printf("%s\n",p);
}
//gcc C++ error C warning
int main()
{
    const char a = 5;
    assign(a);
    const char *p = "helloworld";
    //argument is incompatible with prototype
    assignpoint(p);
}  
  • 尽量不要使用无符号类型
int array[5] = {
  1,2,3,4,5};
//当数组类型发生变化时,这种方式比下面的方法更通用
#define TOTAL_ELEMENTS sizeof(array)/sizeof(array[0])
// #define TOTAL_ELEMENTS sizeof(array)/sizeof(int)

int main()
{
    int d = -1;
    // TOTAL_ELEMENTS类型是无符号整数,d被转化为无符号数
    // 需要强制类型转化
    // if(d<(int)TOTAL_ELEMENTS)
    if(d<TOTAL_ELEMENTS)
    {
        printf("hello");
    }
}  

第二章 这不是Bug,而是语言特性

书中的这句话成了现在的经典啊
this is not a bug,it’s a feature

  • switch
#include<stdio.h>
int main()  
{
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值