第一天2017/03/28

王保明老师面试常问问题:

二级指针用过没有?怎么用的?
二级指针的输入输出模型会不会?
二级指针怎样把结果甩出来?
模块的封装与设计?做过哪些模块?
回调函数

程序员培养哪些能力?
这里写图片描述
两种架构
这里写图片描述
程序设计思维
这里写图片描述

【知识点开奖】
1、选择排序思想
————————————————————x轴
|
|
|
|
|
|
y

for(int i=0; i<10; i++) //外层循环:控制第几趟
        for(int j=i+1; j<10;j++) //内层循环:比较大小
        {
            if(a[i]<a[j])
            {
                int temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }

2、

void print(int a[10])
{
    ... ...
}
int main()
{
    int a[10] = {1,2,3};
    print(a);
}

注:在形参里边出现的int a[10]、char ch[30]等,编译器会把它当成指针,也不会主动的分配内存 < == > 等价于int *a、char *c等。

3、压死初学者的三座大山

数组数组类型
数组数据类型和数组数类型指针
数组数据类型和数组数类型指针关系

4、数据类型、变量的本质

数据类型:是固定内存大小的别名,比如:a+1与 &a+1 的不一样,是因为a与&a的数据类型不同,步长不同。
变量:(一段连续)内存空间的别名,变量是一个标号。
    变量三要素(名称、大小、作用域)

5、void*

memsetmemcpy
void不能定义变量,因为编译器不知道void内存大小
void*指针,可被任何指针赋值,但是反之不行。

6、内存四区模型-建立流程
这里写图片描述

这里写图片描述

1)应用程序.exe程序中的代码存放在硬盘上
(2)当点击.exe程序运行起来时,操作系统先把代码Load到内存中;
(3)操作系统把代码分成四个区
(4)然后再找到入口函数main,进行执行代码。
【程序案例】
//C语言的灰色地带
int a; //全局区
int b = 100; //全局区

int main()
{
    int a; //栈区(又叫临时区)
    int *p;//栈区

    p = &a; //cpu执行的代码,放在代码区
    a = 10; //cpu执行的代码,放在代码区

    p = (int*)malloc(sizeof(int)*100); //堆区
    if(p)
    {
        free(p);
    }
}

7、在项目工程中,“全局变量”的统一管理

/*【常见困难】在项目开发中,如果某个头文件中定义了一个全局变量,如果
在其他的多个文件中包含#include"head.h",那么会造成编译错
误:“error:找到一个或多个重定义的符号”。
*/
//解决方案:在项目工程开发过程中,

//1.把所有的全局变量的定义都放在一个.cpp文件中,统一管理。
    int a = 0;
    int b = 1;
    int c = 2;

//2.在其他文件中使用某个全局变量时,直接用extern关键字声明(可以把该全局变量扩展到声明的文件中)。
    //即extern修饰全局变量,可以使该全局变量跨文件。
    extern int a;
    extern int b;
    extern int c;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值