Linux 学习4-GCC
一、GCC的使用
- GCC是可编译C、C++,以及Java等的编译器
- GCC:功能强大,稳定,免费
- "gcc -v" 可以用来查看gcc版本,并验证其是否正常运行。
- 用前面学过的vi编辑器新建"hello.c"文件,然后进入书写第一个Hello world 代码
#include <stdio.h> int main() { printf("Hello World!!!\n"); }
- “gcc -o 输出文件名 源文件” (o:output abbreviation ) 输出文件名自己随便定义; 源文件为自己的源代码文件"hello.c";enter键后如果语法有错误,gcc会报错,如果没有错的话,则什么也不显示。
- 然后"ls",查看该目录下文件,会发现多了一个自己定义的输出文件名文件,利用"file 输出文件名",可以看到该文件为executable file---可执行文件;
- 利用"./可执行文件名" 操作可以执行该文件,并可看见输出“Hello world!!!”
- 编译过程分为:
- 预处理:preprocessing
- 编译:compilation
- 汇编:assembly
- 链接:linking.
- GCC使用前需要安装好一些文件:g++、gcc、ssh等
二、指针的复习
- 练习:使用指针取值; 移动指针
void test1()
{
int a;
int *c;
char *pc;
a=0x123456;
c=&a;
pc=(char *)&a;
printf("&a =0x%p\n",&a);
printf("*c =0x%x\n",*c);
printf("*pc=0x%x\n",*pc); pc++;//char 每次只能输出一个字节,因此会逐渐向上输出a的剩余数值。
printf("//=======================\n");
printf("*pc=0x%x\n",*pc); pc++;
printf("*pc=0x%x\n",*pc); pc++;
printf("*pc=0x%x\n",*pc);
}
输出结果为:
由图片可以得出:
- 地址存储是小端模式:a=0x123456, 则低地址存储56,高一级存储34,,如此向上。总归就是高位存高地址,低位存低地址。
- char * 类型,每次只能存储1个字节的大小, a为int型,4字节,所以第一个char * 只能存a的小端数字56.
- 指针每加1的大小,实际上是加了指针类型大小的内存。如c为int* 型,若地址为0x000000,则c+1地址为0x0000004。若c为char *型,初始地址为0x000000, c++地址为0x000001。
未完待续
三、指向数组和字符串的指针
- 数组指针:数组名对应就是指针变量P,且如果数组为int型,数组名的地址为0x000000,则"P+1"表示地址增加4,因为Int型大小为4字节,即p+1--->a[1]地址为0x000004.
- 数据在内存中的存储以 "小端模式":数据的高字节存放在内存中的高地址,低字节存放在低地址,如int型数组a[3]的首地址为0x000000,值为0xff887766,则:
地址 | 值 |
---|---|
0x00000C | 0xff |
0x000008 | 0x88 |
0x000004 | 0x77 |
0x000000 | 0x66 |
char *pc="abc"
表示pc是指向字符串的字符指针,pc就是字符串"abc"的首字符'a'的地址.
四、gcc编译过程详解
Higher you climb, more view you will see.
posted on 2020-04-24 22:48 Nancy_Fighting 阅读(130) 评论(0) 编辑 收藏 举报