1.在main方法里面直接定义一个很大的数组的时候。可能会出现栈溢出:错误代码演示:

#include<stdio.h>

#include<stdlib.h>

void
main()

{

int
a[1024 * 1024];

int
num = 100;

system("pause");

}

错误截图:

2.在定义数组的时候要定义数组的长度,否则会出现错误。

(特例:在GCC编译器下,不会出现错误(由于标准不一样))。

3.打印而且赋值的是:

for (int
i = 0;
i <
length;i++)

{

printf("%d\n",a[i]
= i); 
//初始数组并打印

}

4.内存分配能够通过三个函数实现

A.void *malloc(size_t size):malloc仅仅管分配,不初始化内容(size:Bytes
to allocate:分配的字节数)。

B.void *calloc(size_t,size_t size),其有两个參数(num:Number
of elements;size:Length in bytes of each element),第一个參数是,开辟的数量,第二个參数是每一个參数的大小。

C.void *realloc(void *memblock,size_t size);Reallocatememory blocks;用于分配内存.

memblock:Pointer to previously alloctedmemory block;

size:New size in bytes

比如:

int *p1 = (int*)malloc(sizeof(int)*10);//仅仅管分配。不初始化

int *p2 = (int*)calloc(10,sizeof(int));//calloc会进行内存清零

样例:

#include<stdio.h>

#include
<stdlib.h>

int
main(int
argc,
char *argv[])

{

//仅仅管分配

int *p1
= (int *)malloc(sizeof(int)*
10);

//calloc会进行内存清零

int *p2
= (int *)calloc(10,
sizeof(int));

printf("%p,%p",
p1,
p2);

for (int
i = 0;
i < 10;
i++)

{

p1[i]
= i;

p2[i]
= i;

}

getchar();

return 0;

}

5.realloc分配内存

#include
<stdio.h>

#include<stdlib.h>

void
main()

{

//分配内存

int *p
= (int *)calloc(10,sizeof(int));

printf("%p\n",
p);//输出地址

int
i;

for (i
= 0; i < 10;i++)

{

//*(p + i)等价于p[i]

*(p +
i) =
i;

}

//变长,第一个參数是指针地址。第二个參数表示的是数组的个数

int *pnew
= (int *)realloc(p,100000);

//realloc.第一种情况,后面的内存没实用,就直接扩展变长

//另外一种情况。后面的内存有人用,先分配新的长度,拷贝原来原来的内存,释放原来的内存

printf("%p",pnew);

for (int
i = 10;
i < 25000;i++)

{

*(pnew +
i) =
i;

}

system("pause");

return 0;

}

6.新建项目dlllib

编写代码:

#include<stdio.h>

#include<stdlib.h>

void
go()

{

printf("Hello
World\n");

}

7.制作dll,右击项目à属性à配置属性à常规à分别改动配置类型(动态库.dll)和目标文件名称。

8.制作lib,右击项目à属性à配置属性à常规à分别改动配置类型(动态库.lib)和目标文件名称。

9.引入lib.lib的方式有

A:将.lib复制到源码所在的文件夹下。à通过代码引入.lib。

代码是:

#pragma comment(lib,”test.lib”);  //当中test.lib就是要引入的.lib静态库(注意,也要将静态库相应的.h放到源文件所在的位置)。

B:将.lib复制到源码所在的文件夹下。

à通过配置的方式引入静态库。

方式是:

右击项目à属性à配置属性à输入à附加依赖项(如现有依赖项加入的方式加入.lib静态库)。

最新文章

  1. 在 Visual Studio 等编辑器/IDE中自动切换输入法,不需要手动的有没有?
  2. WinForm程序全局捕捉异常处理办法
  3. Bigfish的重新安装
  4. Mac系统搭建Go语言Sublime Text 2环境配置
  5. 录制简单的自动化测试工具SlikMobile初体验
  6. System.Web.HttpRequestValidationException——从客户端检测到危险的Request值
  7. 1.SQLAlchemy文档-简介(中文版)
  8. Python刷票小脚本——网络人气奖?不好意思,我要了
  9. MYI 文件内容
  10. grub命令来引导linux
  11. 【C#通用类】日志记录类
  12. HTML5: Screen Orientation API
  13. HDU-2060-Snooker
  14. OpenCV使用FindContours进行二维码定位
  15. css 设置 checkbox复选框控件的对勾√样式
  16. Nmap脚本引擎原理
  17. 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest J. Bottles
  18. 开源项目AndroidReview学习小结(1)
  19. JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
  20. VUE之图表操作

热门文章

  1. CSU 1378 Shipura 简单模拟
  2. C# http服务器
  3. Git学习总结(6)——作为一名程序员这些代码托管工具你都知道吗?
  4. 《AndroidStudio每日一贴》5. 怎样高速查看某个方法/注解的定义?
  5. Anatomy of an IIS7 configuration path
  6. POJ 1895 分层图网络流+输出路径
  7. 基于Java的开源3D游戏引擎jMonkeyEngine
  8. Linux下图解minicom安装
  9. 用json2.js 代替 json.js防止与jQuery的js冲突
  10. Ubuntu源配置