apue 2013-03-14

1.  做什么。文字

2.  分析。  思考

3.  设计。  伪代码

 

 

1嵌入式方向。

2图形编程:qt(c++) gtk(c)

3应用程序:vim ls ps等。Linux c开发

4系统:linux(分时);

                                   系统构建(cpu(arm)  内存 硬盘(flash芯片))

5驱动程序:硬件

6硬件:pcb画图工具,设计硬件难

 

 

Linux arm嵌入式文件系统

                            GRUB引导程序  bootloader  linux kernel

 

职位:1GUI编程:qt c++(很难) 3

         2C,gcc,gdb,makefile,linuxapi(接口)(apue) 4~5

                     Apue:文件,多进程,多线程,进程间的通信,网络编程

      3系统构建 bootloader linuxkernel 文件系统  1

      4 驱动或裸机 3~4

 

程序=数据+算法

              数据来源?

              有线:网线

        无线:

        Svn,cvs 上传工具,版本管理软件

 

段错误:两行

                     Printf(“=============\n”);

                     Printf(“+++++++++++++\n”);找到所有段错误

 

10->100->1000->10000

200(10个程序)

 

练习题:统计指定目录中所有.c文件的行数

              Wc *.c

              Mmap+memmove+truncate文件内容修改

              Mytt abc xyz file

              Mytt xyz a        八皇后问题

 

C笔记

  1. 自己的笔记
  2. 代码

C语言概述

为什么学习C语言?

为什么要编程?

答:让计算机作事情

       二进制      ->       编程语言   ->     自然语言

c/c++

编译类:C,C++(效率高)

解释类:shell,python(脚本),java.

 

 

思想    ->          a.c             ->            a.out

Vi+c语言语法        a.c gcc                       a.out  二进制文件

 

Gcc

Gcc a.c –o a 把a.c编译成a.out  elf 可执行文件

Gcc –E    #号开头去掉

Gcc –S    把C  ->   汇编

                      I=9;

                      Fun (i++,++I,++I,i++)

                      不同编译器不同

Gcc –c(小写)   二进制做库.libc

Gcc –L        增加搜索库的路径

Gcc –l         -lpthread编译时加载指定的库

Gcc –I         增加搜索头文件的路径

Gcc –g         调试版本   a.out 有a.c 源代码  gdb使用  objdump反汇编

Gcc –Wall      警告

Gcc –O0~9      编译优化

                            Volatile  int   a;易变,防止优化

                            Const   int   a;不可变

Gcc –std=c99  a.c      对c99标准的支持   c89

                      For ( int i=1;i<10;i++)

Gcc –DN=9       条件编译   #define N 9(很有用)一个代码两个版本

-Ddug        调试   release  发步信息

#ifndef   N

                     If (i%2==0)

                                          Printf(“%d\n”,i);

#else

                     Printf(“%d\n”,i);

#endif

 

出错:   编译出错    执行出错

         A=10;       汇编

 

.c   ->   二进制文件    gcc 编译器

程序=数据+算法

数据的组织形式:数据结构

集合:int a;int b;

线性结构:int arr[10];变长数组  变长结构体

         一对一(数组),链表

       前提:int arr[x]  x变量

              Void fun(int x)

              {

                     Int arr[x];

}

Main()

{

       Int x=10;

       fun (x);

}

树状:一对二,二叉树

图:一对多

 

算法:操作数据的方法

 

Vim 的配置文件

                                   /etc/vimrc  全局配置文件

                                   ~/vimrc    当用户的配置文件(主目录)

Set   number

Set   ci   自动对齐

 

替换 ab .i #include <stdio.h>   ab .m int main(int argc,  char **argv)

 

Vim 命令

              Ctrl +n 自动补齐;输入模式   必须加载头文件

              行首gg=G末尾   命令行  对齐

              ==单行对齐

 

Int arr[x];     栈  sizeof(int)*x

堆Malloc(sizeof(int)*x)  

最大线程有限

 

作业:

1.  思考.helloworld  程序如何执行

如果没有#include <stdio.h>,问题?也能

是谁帮助我们把helloworld输出到屏幕上

2完整定义变量的格式

[][][][] a;

Int a;

  1. sizeof()运算符

int a;

cha *p=”abcd”;

char *p1[10];

void *p2=”abcd”;                       

sizeof(int);

sizeof(void);

sizeof(9);

sizeof(‘a’);

sizeof(“abcdefg”);

sizeof(*(void *)p2);

 



 

 

 

posted @ 2013-03-14 22:11  王井玉  阅读(195)  评论(0编辑  收藏  举报