编程导航

格式化字符串

  将不同类型的变量放到一个字符串里。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>

//主函数
int main()
{
int a = 0;
double b = 20;
char c = 'a';
char str[20] = { '\0' };

sprintf(str, "%d, %lf, %c", a, b, c);
puts(str);

return 0;
}

点击测试代码

动态内存分配

  malloc 函数是动态内存分配函数,使用数组和指针的时候可以用到。目的是,初始化数组时会占用一定的内存,而为了保证数组能兼容多种情况,初始化的长度往往很大,容易造成浪费,这时就可以利用动态内存分配函数,用多少给多少。但是分配的内存的数组用完了以后要及时清理,否则会堆积。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <stdio.h>
// 引入标准库stdlib.h
#include <stdlib.h>
// 或者引入库 malloc.h
// #include <malloc.h>

//主函数
int main()
{
//初始化
signed int n = 5;

//分配动态内存
//方法一
signed int* p = NULL,* q = NULL;
p = (int*)malloc(sizeof(*p) * n);
//方法二
//int* p = malloc(sizeof(*p) * n);
//signed int* q = NULL;


if (p != NULL)
{
//地址备份
q = p;

//赋值
for (signed int i = 0; i < n; i = i + 1)
{
*p = -i;
p = p + 1;
}

//打印输出
p = q;
p = p + 2;
printf("指针指向的值为:%d\n", *p);

//清理动态内存
free(q);
}
else
{
printf("malloc error!\n");
exit(-1);
}

//清理
p = NULL; q = NULL;
return 0;
}

点击测试代码

在清理动态内存的时候,就会把这一段内存里的所有数据初始化,指针地址不变。清理动态内存需要让指针指向最开始定义时的地址,所以对地址进行了备份。

增加了判断函数,判断是否成功分配内存空间,使程序更加严谨。