完美解析C语言(char*)malloc(x*sizeof(char))
C语言 解析 完美 char malloc sizeof
2023-09-14 09:09:14 时间
(char*)malloc(x*sizeof(char))
假设x=8,那么就是申请了8个连续的字节,当然就有8个连续的地址了,但是返回的是首地址。因为空间是连续的,所以可以通过首地址计算其他地址。
比如
char *p=(char *)malloc(8*sizeof(char));
p就指向一个有8个连续空间的首地址,p+1就是第二个空间的地址。简单总结就是申请空间,有多少空间就有多少地址。
此外,一个sizeof(char)表示一个字节的空间,乘以8,表示8个字节空间,在堆(heap)上开辟8个char的连续地址的空间。所以是8个char的地址.
案例分析:被调函数给结构体分配内存
当结构体的内存在被调函数中分配时,要将其传出,有两种方法使用return传出
Man *createMan(int num)
{
Man *tArray = NULL;
tArray = (Man *)malloc(num * sizeof(Man));
if (tArray == NULL)
{
return NULL;
}
return tArray;
}
使用二级指针传出
int createMan(Man **tArray, int num)
{
(*tArray) = (Man *)malloc(num * sizeof(Man));
if (tArray == NULL)
{
return -1;
}
return 0;
}
createMan(&Man1, 3);
参考文献:C/C++ 的思考:int a[10] 和 int *a = malloc(10 * sizeof(int)) 的区别
相关文章
- C语言怎么改变窗口的字体颜色和背景颜色?
- C语言的数组初始化「建议收藏」
- c语言如何遍历数组,C语言数组遍历
- linux c语言xml解析xml,纯C语言XML解析器
- 蓝桥杯 K好数 (dp)------------C语言
- 蓝桥杯 名次判断(详解)----------------C语言—菜鸟级
- C语言和C++的区别和联系
- 如何使用vscode快速配置C语言环境(简单实用)
- 相见恨晚!C语言的驱动法编程详细解析(超多代码案例)
- 彻底搞定C语言指针(精华版)详解编程语言
- Linux下利用C语言轻松创建文件(linux 创建c 文件)
- 让C语言实现MySQL数据库程序功能(c 写mysql)
- 表C语言如何实现MySQL数据表清空(c mysql清空)
- MySQL字段取值的C语言实现(c mysql字段取值)
- 用C语言连接远程Oracle数据库(c 连接远程oracle)
- C语言连接Oracle数据库拖管库实例解析(c连接oracle拖管库)
- MySQL示例教程快速上手C语言(c mysql demo)
- 高并发下的C语言与 Oracle数据库协同处理(c oracle 高并发)
- C语言编程与Oracle数据库交互实例(c oracle编程示例)
- 实践C语言连接Oracle数据库的最佳实践(c oracle最佳)
- 字段C语言 CentOS环境下Oracle四种字段类型深度介绍(c oracle 四种)
- C语言-内存函数的实现(二)之memmove
- 解析C语言中空指针、空指针常量、NULL&0的详解
- php读取二进制流(C语言结构体struct数据文件)的深入解析
- 如何将C语言代码转换为应用程序(也就是编译)
- C语言static修饰函数详细解析
- C语言中的内联函数(inline)与宏定义(#define)详细解析
- C语言printf详细解析
- C语言安全之数组长度与指针实例解析