您的位置:首页 > 理论基础 > 数据结构算法

深入学习C语言和数据结构

2019-04-17 21:36 447 查看

第一章:C语言数据类型和表达式

1. main 函数也可以传入参数

#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Hello World!\n");
return 0;
}
//argc表示传入参数的个数,argv[]表示数组

例如:

ls -l /usr/local/src/

以上命令会以数组的形式存入argv[ ]中

char *argv[3]={"ls","-l","/usr/local/src/"}

2. file 命令

file hello			//hello是个编译后的文件
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs),
for GNU/Linux 2.6.18, not stripped

ELF:linux下的可执行程序的格式(比如C程序)
LSB:小端字节序
executable:可执行的
dynamically linked:动态库

3. rz 命令

把 linux 中文件下载到 windows 下。

4. 编程语言发展历程

机器语言

00	01	02			// 00表示加
01	03	02			// 01表示减
02					// 02表示搬运

汇编语言

ADD	01	02
SUB	03	02

as 汇编器把汇编语言翻译生成二进制的机器语言
由于不同的机器"ADD"等命令不同,还有汇编器不同,不具有可移植性

C语言

1+2

C语言 ——> 汇编(gcc命令) ——> .o (机器语言)——> .exe(可执行)

5. 程序入门

#include <stdio.h>						// 单行注释:包含系统的头文件
int add(int a, int b);					// 函数声明
int main(void)
{										// 花括号、程序体、代码块
int    a = 500;  		    		// 定义变量初始化
int    b;             				// 定义变量,那这时的值是随机值

b = 20;            					// 变量赋值

printf("Total: %d\n", add(a, b));   // 函数调用,这里的a和b是实参
}

/* 返回 a+b 的值 */
int add(int a, int b)					// 函数定义,这里的a和b是形参
{
return a+b;
}

6. 关键字

signed   unsigned    char     short    int    long   double   float
void     enum        union    struct   volatile

auto     const      register     restrict     sizeof     static    typedef

if    else   for    while    do    switch   case  default   break   continue   goto

inline   extern   return

C90关键字:   signed   void
C99关键字:   _Bool(true false)    _Complex  _Imageubary

char ch = ‘a’
// 存的数据并不是a,存的是0x61
volatile

volatile int reg=10;			// volatile,防止被优化
sleep(2);
if( reg==10 )					// 此语句是废话,在寄存器中会被优化
{
do_something;
}

const 常量

const a=10;
a=20;							// 不能修改a的值

register 寄存器常量

int a=10;						// a存放到内存
register int a=10;				// a存到寄存器,cpu取数据是在寄存器里面取的

//寄存器是有限的,如果没有那么多的寄存器,a还是存放到内存中

sizeof

char *p="Hello world";
sizeof(p);						// 4/8,p是一个指针,指向数组的首地址
strlen(p);						// 11
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: