Linux 学习4-GCC

一、GCC的使用
  • GCC是可编译C、C++,以及Java等的编译器
  • GCC:功能强大,稳定,免费
    1. "gcc -v" 可以用来查看gcc版本,并验证其是否正常运行。
    2. 用前面学过的vi编辑器新建"hello.c"文件,然后进入书写第一个Hello world 代码
    #include <stdio.h>
    int main()
    {
    	printf("Hello World!!!\n");
    }
    
    1. “gcc -o 输出文件名 源文件” (o:output abbreviation ) 输出文件名自己随便定义; 源文件为自己的源代码文件"hello.c";enter键后如果语法有错误,gcc会报错,如果没有错的话,则什么也不显示。
    2. 然后"ls",查看该目录下文件,会发现多了一个自己定义的输出文件名文件,利用"file 输出文件名",可以看到该文件为executable file---可执行文件;
    3. 利用"./可执行文件名" 操作可以执行该文件,并可看见输出“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); 
}

输出结果为:
在这里插入图片描述
由图片可以得出:

  1. 地址存储是小端模式:a=0x123456, 则低地址存储56,高一级存储34,,如此向上。总归就是高位存高地址,低位存低地址。
  2. char * 类型,每次只能存储1个字节的大小, a为int型,4字节,所以第一个char * 只能存a的小端数字56.
  3. 指针每加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编译过程详解

posted on 2020-04-24 22:48  Nancy_Fighting  阅读(130)  评论(0编辑  收藏  举报

导航