深入学习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
相关文章推荐
- C语言深入学习--checklist7:链接、运行时数据结构、申明
- 麻雀虽小,五脏俱全——由C语言小程序深入学习软件工程和设计开发规范
- C语言数据结构--双向链表的学习
- 数据结构学习笔记-循环链表(C语言实现)
- C语言深入学习系列 - 字节对齐&内存管理
- C语言的深入学习及uclinux上简单硬件驱动实验
- 深入理解C语言10 进一步学习的一些建议
- C语言深入学习系列 - 字节对齐&内存管理
- C语言深入学习系列+-+字节对齐and内存管理
- C语言学习历程(十八) 数据结构二叉树的创建、遍历、深度等算法
- 深入C语言之字节对齐 - [C 数据结构 算法]
- 【C语言】【数据结构】菜鸟学习日志(四) 用二叉树实现非递归排序
- 【数据结构】栈学习之数组实现(C语言)
- 数据结构学习笔记-线性表链式存储(C语言实现)
- 深入学习C语言系列(二): #define与typedef
- 数据结构学习1——顺序表(C语言描述)
- C语言深入学习系列 - 字节对齐&内存管理
- C语言《数据结构》难题,非高手别参与,以免丧失学习信心!
- 补习-----C语言的深入学习
- 深入学习C语言计划