国嵌视频学习
liaoxuming002
倒计时.............
展开
-
专题2-5位运算符分析
1. 位运算符号.>>右移.~ 取反^ 按位异或| 按位或& 按位与左移和右移注意点 左移运算符• 规则:高位丢弃,低位补0 右移运算符>>把运算数的二进制位右移• 规则:高位补符号位,地位丢弃0x1A同学:加减法的优先级比较低,所以先算0x1加3,最终为7。B同学:我觉得先算2+3,所以结果为32。C同学:可以这原创 2013-03-30 22:46:18 · 673 阅读 · 0 评论 -
专题4-7数组参数和指针参数分析(国嵌C语言视频)
1. 思考为什么C语言中的数组参数会退化为指针?退化的意义C语言中只会以值拷贝的方式传递参数当向函数传递数组时 将整个数组拷贝一份传入函数 将数组名看做常量指针传数组首元素地址C语言以高效为最初设计目标,在函数传递的时候如果拷贝整个数组执行效率将大大下降。二维数组参数二维数组参数同样存在退化的问题 二维数组可以看做是一维数组 二原创 2013-04-04 23:01:48 · 701 阅读 · 0 评论 -
专题3-5.#pragma预处理分析(国嵌C语言视频)
1. #pragma简介#pragma是编译器指示字,用于指示编译器完成一些特定的动作 #pragma所定义的很多指示字是编译器和操作系统特有的 #pragma在不同的编译器间是不可移植的 预处理器将忽略它不认识的#pragma指令 两个不同的编译器可能以两种不同的方式解释同一条#pragma指令一般用法:#pragma parameter注:不同的para原创 2013-04-03 20:17:31 · 874 阅读 · 0 评论 -
专题3-6.#和##运算符使用解析(国嵌C语言视频)
1. #运算符用于在预编译期将宏参数转换为字符串#include #define CONVERS(x) #xint main(){ printf("%s\n", CONVERS(Hello world!)); printf("%s\n", CONVERS(100)); printf("%s\n", CONVERS(while)); p原创 2013-04-03 20:32:41 · 597 阅读 · 0 评论 -
专题4-1.指针的基础(国嵌C语言视频)
1.指针本质 指针在本质上也是一个变量 指针需要占用一定的内存空间 指针用于保存内存地址的值*号的意义 在指针声明时,*号表示所声明的变量为指针 在指针使用时,*号表示取指针所指向的内存空间中的值1.指针占用的内存空间2.指针的地址3.通过*号写内存#include "stdafx.h"#include int mai原创 2013-04-03 21:29:10 · 974 阅读 · 0 评论 -
专题4-3.数组与指针分析(国嵌C语言视频)
1. 数组本质数组是一段连续的内存空间数组的空间大小为sizeof(array_type) * array_size数组名可看做指向数组第一个元素的常量指针 2. 指针的运算指针是一种特殊的变量,与整数的运算规则为p + n; (unsigned int)p + n*sizeof(*p);结论:当指针p指向一个同类型的数组的元素时:p+1将指向原创 2013-04-04 15:51:10 · 1231 阅读 · 0 评论 -
专题4-4.C语言中的字符串(国嵌C语言视频)
1. C语言中的字符串 从概念上讲,C语言中没有字符串数据类型 在C语言中使用字符数组来模拟字符串 C语言中的字符串是以’\0’结束的字符数组 C语言中的字符串可以分配于栈空间,堆空间或者只读存储区#include #include int main(){ char s1[] = {'H', 'e', 'l', 'l', 'o'};原创 2013-04-04 17:09:48 · 1190 阅读 · 0 评论 -
专题5-4.野指针和内存操作分析(国嵌C语言视频)
1.初识野指针野指针通常是因为指针变量中保存的值不是一个合法的内存地址而造成的野指针不是NULL指针,是指向不可用内存的指针 NULL指针不容易用错,因为if语句很好判断一个指针是不是NULL野指针的由来 局部指针变量没有被初始化 #include #include struct Student{ char* name; i原创 2013-04-05 11:42:18 · 676 阅读 · 0 评论 -
专题6-1.认清函数的真面目(国嵌C语言视频)
1. C语言中的函数函数的由来程序= 数据+ 算法C程序= 数据+ 函数函数的意义模块化程序设计难以解决的复杂问题复杂问题1 复杂问题2简单问题1 简单问题2 简单问题1 简单问题2面向过程的程序设计面向过程是一种以过程为中心的编程思想首先将复杂的问题分解为一个个容易解决的问题分解过后的问题可以按照步骤一步步完成原创 2013-04-05 15:49:31 · 1356 阅读 · 0 评论 -
专题6-2,可变参数列表与宏分析(国嵌C语言视频)
1. 问 如何编写一个可以计算n个数平均值的函数?答;#include float func(int array[], int size){ int i = 0; float avr = 0; for(i=0; i<size; i++) { avr += array[i]; } return avr原创 2013-04-05 16:20:52 · 723 阅读 · 0 评论 -
专题7 三个程序(国嵌C语言视频)
1. #includeint main(){ char* p = "hello world!"; int a = (int)p; short s = 'c'; printf("%c\n", (long)(*((int*)p))); printf("%c\n", (long long)(*(((long long*)p)+1))); print原创 2013-04-05 17:39:14 · 1202 阅读 · 0 评论 -
专题5-2.程序中的栈,堆,静态存储区(国嵌C语言视频)
1. 栈,堆,静态存储区.程序中的栈栈是现代计算机程序里最为重要的概念之一栈在程序中用于维护函数调用上下文,没有栈就没有函数,没有局部变量程序中的栈栈保存了一个函数调用所需的维护信息 函数参数,函数返回地址 局部变量 函数调用上下文程序中的堆为什么有了栈还需要堆? 栈上的数据在函数返回后就会被释放掉,无法传递到函数外原创 2013-04-05 10:38:37 · 797 阅读 · 0 评论 -
专题5-3.程序的内存布局(国嵌C语言视频)
1. 栈与堆要等到程序运行,由操作系统分配? 程序的内存布局各个段的作用 堆栈段在程序运行后才正式存在,是程序运行的基础 .bss段存放的是未初始化的全局变量和静态变量 .text段存放的是程序中的可执行代码 .data段保存的是那些已经初始化了的全局变量和静态变量 .rodata段存放程序中的常量值,如字符串常量原创 2013-04-05 11:07:30 · 1056 阅读 · 0 评论 -
专题6-3.函数调用行为, 递归函数(国嵌C语言视频)
1. 活动记录活动记录是函数调用时用于记录一系列相关信息的记录 临时变量域:用来存放临时变量的值,如k++的中间结果 局部变量域:用来存放函数本次执行中的局部变量 机器状态域:用来保存调用函数之前有关机器状态的信息,包括各种寄存器的当前值和返回地址等; 实参数域:用于存放函数的实参信息 返回值域:为调用者函数存放返回值参数入栈既然函数参数的计算次序原创 2013-04-05 16:51:50 · 783 阅读 · 0 评论 -
专题4-6.多维数组和多维指针(国嵌C语言视频)
1.指向指针的指针指针变量在内存中会占用一定的空间可以定义指针来保存指针变量的地址值指向指针的指针为什么需要指向指针的指针? 指针在本质上也是变量 对于指针也同样存在传值调用与传址调用指针同样存在传值调用与传值调用的问题!#include #include int reset(char**p, int原创 2013-04-04 22:30:12 · 634 阅读 · 0 评论 -
专题5-1.动态内存分配(国嵌C语言视频)
1.为什么使用动态内存分配 C语言中的一切操作都是基于内存的变量和数组都是内存的别名,如何分配这些内存由编译器在编译期间决定 定义数组的时候必须指定数组长度 而数组长度是在编译期就必须决定的需求:程序运行的过程中,可能需要使用一些额外的内存空间。malloc和free malloc和free用于执行动态内存分配和释放ma原创 2013-04-05 10:16:06 · 739 阅读 · 0 评论 -
专题2-1注释符号
1. C语言的符号. a: 注释符号 重要吗? /* + + +原创 2013-03-30 09:13:52 · 665 阅读 · 0 评论 -
专题2-2接续符和转义符
1. C语言中的接续符(\)是指示编译器行为的利器 问,下面的是C语言吗? #include #def\ine MAX\255int main(){/\/这是\\注释i\n\t\ *\ p\= \ NULL;printf("%0X\n", p); return 0;}上面的是C程序,而且还可以正确执行.接续体符.是一原创 2013-03-30 20:47:24 · 607 阅读 · 0 评论 -
专题2-3单引号和双引号
1. 下面的程序有意义吗? #include int main(){ char* p1 = 1 ; char* p2 = '1'; char* p3 = "1"; printf("%s, %s, %s", p1, p2, p3); printf('\n'); printf("\n"); return 0;}原创 2013-03-30 21:26:07 · 602 阅读 · 0 评论 -
专题3-1.编译过程简介
1. 编译过程序编译器做了什么a:预编译•处理所有的注释,以空格代替•将所有的#define删除,并且展开所有的宏定义•处理条件编译指令#if, #ifdef, #elif, #else, #endif•处理#include,展开被包含的文件•保留编译器需要使用的#pragma指令//filename: file.c#include#原创 2013-03-31 14:02:55 · 727 阅读 · 0 评论 -
专题2-4逻辑运算符使用分析
1.示例代码1. #include int main(){ int i = 0; int j = 0; if( ++i > 0 || ++j > 0 ) { printf("%d\n", i); printf("%d\n", j); } return 0;}答: 逻辑或运算,原创 2013-03-30 21:49:25 · 507 阅读 · 0 评论 -
专题2-6.++,--操作符使用分析( 国嵌C语言视频)
1. int x; int i=3; x=(++i,i++,i+10); int x; int i=3; (++i)+(++i)+(++i);++i+++i+++i;a+++b;贪心法-- ++, --表达式的阅读技巧 编译器处理的每个符号应该尽可能多的包含字符 编译器以从左向右的顺序一个一个尽可能多的读入字符原创 2013-03-30 23:41:27 · 934 阅读 · 0 评论 -
专题2-7优先级和类型转换分析
1.#include #include typedef struct _demo{ int* pInt; float f;} Demo;int func(int v, int m){ return (v & m != 0);}int main(){ Demo* pD = (Demo*)malloc(sizeof(Demo));原创 2013-03-31 09:36:00 · 561 阅读 · 0 评论 -
专题3-2.宏定义与使用分析( 国嵌C语言视频)
1. #define定义宏常量可以出现 在代码的任何地方 #define从本行开始,之后的代码都可以使用这个宏常量2. #define表达式给有函数调用的假象,却不是函数 #define表达式可以比函数更强大 #define表达式比函数更容易出错 #define SUM(a,b) (a)+(b) #define MIN(a.b) ((a)原创 2013-03-31 19:47:30 · 697 阅读 · 0 评论 -
专题3-4.#error和#line(国嵌C语言视频)
1. C语言的盲点:#error ,#line #error message 自定义的错误消息. 扩展编译器......#error用于生成一个编译错误消息,并停止编译用法#error message注:message不需要用双引号包围#error编译指示字用于自定义程序员特有的编译错误消息类似的,#warning用于生成编译警告,但不会停止编译#原创 2013-04-02 22:24:58 · 790 阅读 · 0 评论 -
专题3-3.条件编译使用分析(国嵌C语言视频)
1.条件编译的行为类似于C语言中的if…else条件编译是预编译指示命令,用于控制是否编译某段代码#includeint main(){ #if (C ==1) printf("first printf\n"); #else printf("second printf\n"); #endif return 0;}用gcc编译, 可使用gc原创 2013-04-02 21:23:25 · 715 阅读 · 0 评论 -
专题4-2.数组的基础(国嵌C语言视频)
1. 数组的概念数组是相同类型的变量的有序集合int a[5];数组示意图:数组包含5个int类型的数据5个int类型数据a代表数组第一个元素的起始地址.2.数组的大小数组在一片连续的内存空间中存储元素数组元素的个数可以显示或隐式指定数组地址与数组名 数组名代表数组首元素的地址 数组的地址需要用取地址符&才能得到 数组首元素的地址值与原创 2013-04-04 13:53:20 · 1107 阅读 · 0 评论 -
专题4-5指针数组和数组指针分析(国嵌C语言视频)
1. 下面这些声明合法吗?问题:array代表数组首元素的地址,那么matrix代表什么?array和&array的地址值相同,但是意义不同,那么指向它们的指针类型相同吗? 答:二 C语言中的数组有自己特定的类型数组的类型由元素类型和数组大小共同决定例:int array[5]的类型为int[5]定义数组类型 C语言中通过ty原创 2013-04-04 20:51:21 · 791 阅读 · 0 评论 -
专题4-8函数与指针分析(国嵌C语言视频)
1.函数类型 C语言中的函数有自己特定的类型 函数的类型由返回值,参数类型和参数个数共同决定例:int add(int i, int j)的类型为int(int, int) C语言中通过typedef为函数类型重命名typedef type name(parameter list) 例:typedef int f(int, int);typedef void原创 2013-04-05 00:17:56 · 674 阅读 · 0 评论 -
专题1,2 数据结构(学习笔记)
国嵌数据结构视频 学习笔记专题1.内行看门道.第一节.1进阶高手的大门_ 1数据结构的教学目标. 理论与实践相结合,数据结构比较难, 数据结构分成专题的形式,计算机现在是应用. 不是搞理论的. 2进阶高手的大门? 什么是高手?语言是要靠应用的,学了就要用, 学了不用就是废物.计算机是用来处理数据,计算. 3.原创 2013-04-19 20:54:01 · 1714 阅读 · 0 评论