linux下的C语言学习----基础篇01

本文详细介绍了C语言的编译过程,包括预处理、编译、汇编和链接四个阶段。讨论了main函数的两种参数形式,并解析了数据类型如整型、浮点型、字符型在内存中的存储方式,以及补码的概念。此外,还提及了字符串和格式化IO,如printf和scanf函数的使用,并对比了字符和字符串常量的区别。
摘要由CSDN通过智能技术生成

最近开始重新学习C语言,记录下学习过的知识和踩过的坑。分享给大家也是为了以后给自己复习用,以下内容都是自己的理解,有错误的地方还请大伙们指出。

一、程序的编译和执行

  • 预处理:gcc -E hello.c -o hello.i
    调用预处理器cpp,完成诸如宏展开、处理条件编译、删除注释等工作。一般生成.i文件。
  • 编译:gcc -S hello.i -o hello.s
    调用编译器cc1,把源程序翻译成对应于目标系统的汇编文件.s
  • 汇编:gcc -c hello.s -o hello.o
    调用汇编器as,将汇编指令翻译成机器指令,生成可重定位目标文件。
  • 链接:gcc hello.o -o hello
    调用链接器ld,将生成的可重定位文件与相关库文件链接,生成可执行目标文件。

二、关于main函数的参数

main的函数头有两种标准分别是:
第一种:int main(int argc,char *argv[]) int argc为传入main函数的字符串个数,argv[]数组用来存储传入的字符串。

#include <stdio.h>

int main(int argc,char *argv[])
{
    int i;
    for (i = 0; i < argc;i++)
    {
        printf("%s\n", argv[i]);
    }
    return 0;
}

第二种 int main(void) 这种函数不向main函数传递任何参数。

三、数据的基本类型及数据(整型、浮点型、字符型)在内存中存储的形式

  • c语言变量命名规则
    在定义变量时,变量名可以是字母、数字和下划线的组合。(但要注意一下几点)
    1、变量名的开头不能是数字,可以由字母或下划线开头。
    2、不可以包含空格、标点符号和类型说明符
    3、字母区分大小写
    4、不可以是关键字
    5、不能超过有效字符(255个)

  • 整型(64位编辑器)(数据类型所占字节数要根据编辑器的位数决定)
    unsigned int、int: 占4个字节
    short : 占2个字节
    unsigned long、long、long long: 占8个字节

  • 字符型
    char:1个字节

  • 浮点型
    float: 4个字节
    double :8个字节

数据在内存中存储的形式为补码。
例如:

#include <stdio.h>

int main(void)
{
    int x = 5, y = -5;
    printf("%#x\n", x);
    printf("%#x\n", y);
    return 0;
}

结果为:
在这里插入图片描述
分别为x=5与x=-5的补码

  • 数据的原码、反码、补码(用十六进制表示时)
    原码 : 数据的十六进制码。
    反码 : 符号位不变,其他位按位取反。
    补码 :反码的基础上加1。
  • 小端存储模式
    目前绝大部分计算机采用的是小端存储模式,即数据的高字节保存在内存的高地址中,数据的低字节保存在内存的低地址中。
    例:一个数据:int d=0x87654321
    比如一段内存:1000,1001,1002,1003。那么存储的形式为:
    1000<------>21
    1001<------>43
    1002<------>65
    1003<------>87

四、字符串和格式化IO

  • 字符串
    字符串就是一个或多个字符的序列。
    例:“helloworld”
    在内存中存储的形式类型于定义一个数组将每个字符分别存入数组。
    在这里插入图片描述
    字符串和字符的区别
    例:字符常量’x’和字符串常量"x"是完全不同的。首先前者为基本类型,后者为派生类型。
    其次"x"其实
    是由两个字符组成,分别为’x’、’\0’。
  • 格式化IOprintf()和scanf()函数用于使你能够和程序通信。它们被称为输入输出函数,简称IO函数。
    printf()函数和scanf()虽然用途不同,但它们的工作几乎相同,都是用了格式控制串和参数列表。
    使用printf打印变量的指令取决于变量的类型,例如打印整数时用%d,打印字符时用%c等,这些符号被称为转换说明(conversion specification),是它们指定了改如何把数据转换成可现实的形式。

转换说明中的转换类型
在这里插入图片描述
附上scanf()函数的说明(一位优秀博主的原创)
https://blog.csdn.net/hou09tian/article/details/88311149?

  • 以上内容都是自己的理解,如有错误,还望指出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值