c笔记整理
来源:互联网 发布:电子翻书制作软件 编辑:程序博客网 时间:2024/06/06 03:37
Day1:主要讲c指针 (数组,字节,位,倒序)
(经典题目:倒倒倒(数据空间、操作对象今天只讲了这个),删删删,压压压)
测试题
1.用宏定义一年的秒数 ,不能自己算。
2.用带参数宏定义的时候一定要注意括号。
3.
a)、一个整型数(An integer)
int a
b)、一个指向整型数的指针(A pointer to an integer)
Int *p
c)、一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to apointer to an intege)
Int* *p
d)、一个有 10 个整型数的数组(An array of10 integers)
Int a[10]
e)、一个有 10 个指针的数组,该指针是指向一个整型数的。
(An array of10 pointers to integers)Int *a[10]
f)、一个指向有 10 个整型数数组的指针(A pointer to an array of10 integers)
Int (*p)[10] Typedef int XXX[10] ; XXX *p
g)、一个指向函数的指针,该函数有一个整型参数并返回一个整型数
(A pointer to a function that takes an integer as an argument and returns an integer)
Int (*p)(int) Typedef int XXX(int); XXX*p;
h)、一个有 10 个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数
(An array of ten pointers to functions that take an integer argument and return an integer )
Int (*a[10]) (int) Typedef int XXX (int) ; XXX *a[10]
4.关键字 static 的作用是什么?
1)在函数体,一个被声明为态的变量在这一函数被调用过程中维持其值不变。
2)在模块内(但在函数体外) ,一个被声明为态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3) 在模块内,一个被声明为态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
Const 与 volitile 的含义与区别
5.http://blog.163.com/darkbus@126/blog/static/75192241201079101942565/
6.一个位置1 或上1 ;; 置0 与上1取反;; 取某一位 与上1。
7.学c就是玩内存。将现实世界数字化,用c描述需求,交与计算机处理。
8. 内存。。。内核空间。。参数区(argc,argv)。。栈(能用地址,和名字访问)。。 。。。 。。 分。 堆(malloc) 字符常量区(static 全局变量 有只读区,有可读可写区)
在内存中,只有10100数据,地址,与空间大小,没有其他的概念
9.对内存的操作有四种。。
a) 分配 (定义变量)
i. 栈:在(){}中定义或申明的变量 普通变量(非voletile regist static)函数结束即回收
ii. 堆:用malloc申明的变量
iii. Data区:全局变量,静态变量。如char*p=”aaa”.
iv. Code区:b=a<<10;
b) 查看 (strlen printf)
i. 想怎么看就怎么看,用指针的化很自由,只要不是野指针,不会受到任何限制。
c) 改写 (scanf)
d) 拷贝 (倒字节)
内存查看
内存改写
今日例题:
1.能对改变变量值的操作只有++,--,=。
2.看一个数组某一整型,某一个整型的某几位。
3.定义一个数组,数组里装的指针,指针指向函数,函数参数返回值为int。
4.颠倒一个数组的元素,一个元素的某字节,一个字节的位。
Day2:主要讲函数值传递(一元二次方程根的求解 函数参数返回值 对象思想 结构体排序(有回调思想))
函数只有四种类型
1. Void fun (void)
2. Void fun (void*, ...)
3. Void* fun (void)
4. Void* fun (void*, ...)
参数:
直接传递:尽量用 揉起来传:只要能用尽量用。 装在塑料袋里传:禁止使用。
间接传递:传起始 地址 和长度 用结构体,则为万能传参。。
返回值:
揉在一起传 返回结构体 用数组(用全局变量,用static,用malloc)
返回值是为了修改父函数中的某些空间,而return,则是用来返回函数执行的状态值。
回调:用指针调用函数。。C的灵魂;
函数直接,或间接调用自己,叫做递归。用递归是高手,或者写错。
面试题:求strlen
用指针调用函数叫做回调。
今日例题:
经验1:用递归函数返回值,可以取消一个变量的定义。
经验2:若要用函数改变父函数中的某些变量,参数里必须传递该变量的地址
1.取一个整型的某几位,置零一个整型的某几位,修改一个整型的某个字节。
2.将一个数组内所有整型复制给另个数组。。。用结构体复制。
3.函数参数传递
a) 直接整型数传递
b) 用结构体打包传递(传结构体名。。。穿结构体地址)
c) 用数组传递(传数组首地址与元素个数)
4.一个数组(内存)的显示(整型,字符型,字符串(给首地址即可),结构体(正常显示需正常匹配))
5.一个字节(内存)的显示(用移位取位,用数组,用结构体)
6.用函数求一个一元二次方程的根(day2/func_xx.c)(用结构体打包输入输出,用return标识计算结果状态)
往一个函数的参数里穿地址可以传递在父函数中需要改变的值。
Return返回的应该是该函数执行状态
7.用函数交换两个整型,交换两个字符串,通用交换即(交换N个字节)
用异或交换,可以不定义第三方变量
交换字符串时字符串的地址为char*,传进的地址需强转成int*,交换后再强转成char*
交换n个字节时,将n作为参数传入,在函数中循环n次交换。
Day3:主要讲习题及消化
函数的调用其实是( (*fun)( ) )只是可以省略,同时也可以用函数的指针调用(*p)();
p(); 即 回调。效果一样。
今日例题:
1.删除制定字符串
Day4:数据结构(链表的 增 删 改 查)
Day5:软件与硬件的工作原理
---------------------------------------------------------------------------------------------------------------------
=====================================================================
数据结构:数据在内存中的存放形式
结构是无穷的,但是有很多经典的结构,就像建筑结构一样。
如下:表。List 栈。Stack 队。Queue 树.Tree 图gragh
这种限制是无法强制执行的,需要使用的人承认,并遵守其规则
物理结构 一看就知道的兄弟
逻辑结构 在银行必须排队,但并不是坐在最前面的就是最先服务的。。在如网订火车票
编程。看重的是逻辑。
物理长相不能说明逻辑长相。。。
数据结构与c没有太大关系。
节约时间,浪费空间。空间无限制。可任意插队。
顺序存储表。。链式存储表。。
今天要写,面向对象的程序了。任意一个操作对象都要有 增 删 改 查 的功能。。
图形界面程序都是面向对象的。在意的是有哪些功能,而与使用与否无关。做软件的人想的是尽可能的提供功能,而具体怎么使用不考虑。。
C可以写面向对象的程序,但比较蹩脚。。
Main函数体现过程。。子函数体现对象。
全局变量是最不应该出现的变量。。。如果是大数组,最好不要赋初值。。
对象的文件用单独的文件来做。
一定要告诉别人这个对象怎么用。增 删 改 查。Show。
程序,就是数据结构+算法;;
硬件与软件的工作原理。
纸带打洞洞
磁带
光盘
进而发明了编程语言 汇编 2代表mov助记符
然后出现了c..
汇编语言的容量比c大。。。
C只能操作内存,汇编能操作寄存器。每一款cpu都有独立的汇编语言,因为他们的指令不同。寄存器不一样。一样就知识产权了。
就算都是arm的他的指令也是分版本的。需要指令集的修改,淘汰,增加。。。
对应的指令版本也有对应的编译器。。
指令集版本V5 硬件架构arm 4 6 7 8 a8到a9
学arm a9最好。便宜,能跑虚拟系统。 Cpu的架构一直保持arm架构,所以就叫arm不管怎么升级。。
Arm授权 苹果应该买到了所有的授权。
三星买的二级黑盒,但接口是开放的,可以根据客户需要自己挂外围设备。。Gps等等。。
任意一个电子设备都有三个寄存器,控制寄存器,数据寄存器,状态寄存器
控制寄存器可以设置串口的波特率 数据存储器存放数据,状态寄存器标识串口传输状态
将电子设备的这些寄存器映射到内存时,就可以操作他们了。。
这种映射需要帮手,每买一个芯片他就会有资料s3cs10
控制外围设备,即找准并操作sfr area就可以了 gp 通用io口 arm有很多组io口,每一组都有三个寄存器。
- C++-自整理笔记
- Misra-c 整理笔记
- c笔记整理
- Misra-c 整理笔记
- Misra-c 整理笔记
- c 语言笔记整理
- C语言学习笔记整理
- C语言学习笔记整理
- C++-内存管理(整理笔记)
- C语言学习笔记整理
- C专家编程整理笔记
- C++-内存管理(整理笔记)
- VS2012(C++)笔记整理2
- C语言笔记整理5
- C语言笔记整理完整版
- C Primr Plus 笔记整理
- c traps and pitfalls整理笔记
- c高级笔记及代码整理
- NOIP 2013 提高组题解 【附AC代码】
- LeetCode Add Binary 高精度二进制加法
- 在Mac OS X中配置Apache + PHP + MySQL
- Storyboard教程-创建Tab Bar控制器和Web视图
- Composer的基本使用
- c笔记整理
- Linux在Xilinx FPGA上的移植
- SQL Tuning
- android - 自定义(组合)控件 + 自定义控件外观
- POJ 中缀表达式的值
- The connection to adb is down, and a severe error has occured.
- 测试驱动开发
- Win32系统中关于COM串口操作的API
- malloc失败的另一种原因