#define START 2018.1.5号是意义非凡的一天。
写之前说明下为什么写,怎样写,怎样学。
本人,小白。在某培训机构培训了几个月,写出来的东西,肤浅,有误,请赐教。
此文章,写给那些,想学,却摸不到大纲的同仁。
一.复习基础知识
学习Linux C之前,应该先掌握,标准C语言基本知识。
标准C有关基本知识:
1). 基本宏定义
#: 把宏参数变为一个字符串
##:连接连个宏参数
#define: 定义宏(可单用)
#ifndef:如果找不到指定的宏(一般配套使用)
#endif: 结束当前宏定义语句(一般配套使用)
#if:宏定义语句中的if语句
#else:宏定义语句中的else语句
#end:宏定义语句中的if.else结束语句
eg:1
#include <stdio.h>
#include "user_head_file.h"
需要注意的是在定义后不能加“;"分号,定义语句需要在同一行且区别 typedef
2). stdio.h文件中的入门函数与基本知识
printf():一个可以在终端中打印数据的函数
scanf():一个可以在终端中获取User输入数据的函数
3). 基本类型与对应的输入输出占位符和转移字符
http://blog.csdn.net/shiwenbin333/article/details/4487624 基本类型与对应的占位符(转载引用)
常用(char int doule %c||%s , %d, %f||%g)
http://blog.csdn.net/abc5382334/article/details/13997005 转义字符(转载引用)
常用(\n \\)
eg:2
printf("%d, %s, %c", (int)a, (char)b, (char)c);
scanf("%d, %s, %c", &(int)a, &(char)b, &(char)c);
扩充:&a为获取取b变量a地址符号 *a为声明a为地址类型的符号 (* 称为指针(官方:解引符号), &(官方:引用))
4). 作用域与存储方式
作用域:局部(代码块, 函数, 文件) 全局
存储方式: 普通存储(一般声明) 堆栈存储(static external malloc ) 寄存器存储(register)
5). 表达式语句
if(...){}
if (...){} else {}
if (...){} else if (...){} // 判断分支语句,一般用于一个事件不同情况的判别
switch (){case paramet: break; default : break;} // 分支语句 用法少不一样
for ( ; ; ){} //有限次数循环(一般)或有规律条件的增加或减少
while(...){} //无限次数或条件判断
"//" 用于单行注释
“ /*
* 用与多行注释(包含/*开始 */结束即可, 中间加*美观)
*/”
6). 操作符
+ - * / 常规
% 取余符号 7%3 = 1;
| 按位与 两个为0结果才为0,其余结果位1
^ 按位异 两个位不同结果位1,相同为0
& 按位和 两个位1结果才为1, 其余结果位0
~ 按位取反 1变为0 , 0变为1(比较记忆!与~ : !TUAL = FALSE)
>> 按位向右移动 >> 3
<< 按位向左移动 <<4
++ -- += -= *= /= %= <<= >>= |= ^= &= (++ -- 常用)
|| && < > <= >= != == (常用与if语句的判断)
?: (a>b?a:b 较常用)
. (不是。而是".") -> 结构体对象对于结构体成员访问,结构体指针对象对于结构体成员访问(至于结构体对象是否是指针相关)
7). 指针
(这个不好用简短的语言表示,那就举个例子吧,看明白了对指针就认识差不多了)
int b= 5;
int a = 6;---> a为一个int类型的变量,a本身有自己的地址,有自己的值a记作<&a, a> , 6为一个int类型的常量记作<&6, 6>, 且表达式的作用为a = &6;
int &c = a; --->c为一个int类型的地址的变量, 记作<&c, c> ,表达式的作用为& c = &a;因为<&a, a> 等同于<&a, &6>,则<&c, &6>, c = 6;
int *p = &a; --->p为一个int类型的指针类型的变量,里面保存着变量a的地址记作<&p, p>,且表达式作用为p= &a; 则p=&8, *p = 8;
const int *p1 = &a; 记作<const &p, p> 则p的地址申请为常量,*p = b失败, p = &b允许;
int * const p2 = &a; 记作<&p, const p> 则p对应的要保存的地址为常量 *P = 6允许, p = &b失败;
8).函数(个人理解:函数就是一个变量的加强版,变量允许保存值,函数允许保存代码块)
函数声明:int function();(同于变量的申明 多了一个Void类型而已)
函数定义:{int x = 2; return x;}(同于为变量明确值)
void (*func)(void) 函数指针 (func(void) --->b, 则void (*func)(void) --->void * b)
void * func(void)指针函数
8).数组
int arr[] = {...}
int num;
int arr[num];
int arr[][] = {{...}, {...}...};
int i,j ;
int arr[i][j];
void func(int arr[][j], int i)
int arr[n];
int *p = arr[];
*(p+n) = *(arr+n) = arr[n-1]
9).字符串
#incldue <string>
strcpy();
strcmp();
strcat();
strncpy();
strncmp();
strncat();
stdstd();
sprintf();
sscanf();
10).结构与联合
typedef struct Name
{
Name_t front;
Name_t front;
int date;
Name_t next;
}*Name_t ;
}*Name_t ;
union
{
int a;
} x = {3}; --->x.a = 3;
11). 动态内存分配
int *a = (int *) malloc(sizeof(int))
free(a);
a = NULL;
calloc(n, size), ;
realloc(void* p, resize);