linux C浅学大纲

#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;
    int date;
    Name_t next;
}*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);

标C基本基础知识如上, 当然还有标C的扩展知识(二.基础知识扩展)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值