39 指针的初始化(二叉树排序),其中引入了双向链表

 #include <stdio.h>
#include <stdlib.h> struct Tag_Node
{
struct Tag_Node *left;
struct Tag_Node *right;
int value;
};
typedef struct Tag_Node TNode; TNode* root = NULL; void append(int N);
void print(); int main()
{
append();
append();
append();
append();
append();
append();
append();
printf("head:%d\n", root->value);
print();
getchar();
} void append(int N)
{
TNode *NewNode = (TNode *)malloc(sizeof(TNode));
NewNode->value = N;
NewNode->left = NULL;//初始化这里很重要
NewNode->right = NULL; if (root == NULL)
{
root = NewNode;//就指向根节点
return;
}
else
{
TNode *temp = NULL;
temp = root;
while ((N >= temp->value&&temp->left != NULL)||(N<temp->value&&temp->right!=NULL))
{
while (N >= temp->value&&temp->left != NULL)
{
temp = temp->left;
}
while (N <= temp->value&&temp->right != NULL)
{
temp = temp->right;
}
}
if (N >= temp->value)
{
temp->left = NewNode;
NewNode->right = temp;//形成双向链表
}
else
{
temp->right = NewNode;
NewNode->left = temp;
}
return; }
} void print()
{
TNode* leftside = NULL; if (root == NULL)
{
printf("there is not any element");
return;
}
leftside = root->left; while ()
{
if (leftside->left == NULL)
{
break;
}
leftside = leftside->left;
}
while (leftside != NULL)
{
printf("%d ", leftside->value);
leftside = leftside->right;
}
}

40 有了malloc/free为什么还要new/delete

(1) malloc与free是c/c++标准库函数,new/delete是c++的运算符,都可以用于动态内存申请和释放

(2) 对于非内部数据类型对象而言,对象在消亡之前会自动执行析构函数。由于malloc是库函数不是运算符,不在编译器的控制权限之下,不能把执行构造和下强加于malloc上。

41 各种内存分配和释放的函数联系和区别

(1)malloc类型为(void *),记住强制类型转换,另外参数是size,表示在内存的动态存储区分配一块连续的长度为size的空间

(2)calloc(n,size)在内存动态存储区中分配n块长度为size自己的连续区域,返回首地址

(3)realloc(*ptr,size)蒋ptr内存大小增加到size,新增加的内存没有初始化

42 内存分配的方式有几种

(1)从静态存储区域分配。

(2)栈上创建。

(3)堆上分配,自己管理

43 什么是句柄

(1) 句柄是标识项目的,其中包括内存块,菜单等

(2)windows采用以虚拟内存为基础的操作系统。内存管理器需要不断的移动来满足应用程序的内存需要。移动地址就变化了,这样windows为各个应用程序腾出一部分地址用来专门的登记各个应用对象在内存中的地址变化,这个存储单元的位置的地址本身不变化。这样就相对可以间接的访问了。

44 指针与句柄有什么区别

(1)句柄所指的是一个很复杂的结构,很有可能是与系统相关的。可以想成是指向指针的指针。

(2)指针也可以指向一个非常复杂的结构,但是通常是自己定义的。

最新文章

  1. 将Apache手动安装成Windows的服务
  2. 学习笔记——git
  3. Android 动态创建Fragment
  4. map的使用
  5. Codeforces Round #341 Div.2 A. Wet Shark and Odd and Even
  6. 介绍开源的.net通信框架NetworkComms框架 源码分析(十五 ) CommsThreadPool自定义线程池
  7. 20145315 《Java程序设计》实验三实验报告
  8. iPhone和iPad版本的分辨率a
  9. 关于android 图像格式问题
  10. WPF简单的口算案例
  11. JAXB - Annotations, Class Fields as Attributes: XmlAttribute
  12. java代码整理---正则表达式
  13. Linux mail 命令使用
  14. MFC框架类、文档类、视图类相互访问的方法
  15. IIC 概述之用IO模拟
  16. Cocos2d-x 3.0 场景切换
  17. 【Cocos2d-X游戏实战开发】捕鱼达人之游戏场景的创建(六)
  18. c++使用stmp协议发送电子邮件(163邮箱,TTL非SSL)
  19. CCF2013123最大的矩形(C语言版)
  20. Android为TV端助力:(转载)修改TextView字体样式

热门文章

  1. oracle insert/update
  2. OpenCV load 运行出错 cv::Exception 出错
  3. What is the relationship between Xcode, Swift and Cocoa?
  4. spring 接收_header 作为get请求的httpheader
  5. Linux机器间ssh免密登录
  6. 获取iOS系统版本号,慎重使用[[[UIDevice currentDevice] systemVersion] floatValue]——【sdk缺陷】
  7. 【BZOJ4293】[PA2015]Siano 线段树
  8. EasyCamera Android安卓移动视频监控单兵设备接入EasyDarwin开源流媒体云平台
  9. cpio
  10. windows 复制 文本文件内容 到剪切板