kmalloc

kmalloc(size(结构体)*n)就是申请n个大小为结构体的空间,然后返回一个指向这个空间的首地址的指针。这个指针可以看作是一个数组,它的每个元素都是结构体,所以可以使用索引来访问这个空间的不同部分。例如,如果你有一个指针p,它指向一个由三个struct foo类型的结构体组成的空间,那么你可以用p0、p1和p2来访问这三个结构体。你也可以用p、p+1和p+2来表示这三个结构体的地址。这里有一个简单的例子,你可以在你的电脑上运行它,看看它的输出。

c 复制代码
#include <stdio.h>
#include <stdlib.h>

struct foo {
    int a;
    char b;
};

int main() {
    struct foo *p = (struct foo *)malloc(3 * sizeof(struct foo)); //申请三个struct foo类型的空间
    if (p == NULL) {
        printf("malloc failed\n");
        return -1;
    }
    p[0].a = 10; //给第一个结构体的a赋值为10
    p[0].b = 'A'; //给第一个结构体的b赋值为'A'
    p[1].a = 20; //给第二个结构体的a赋值为20
    p[1].b = 'B'; //给第二个结构体的b赋值为'B'
    p[2].a = 30; //给第三个结构体的a赋值为30
    p[2].b = 'C'; //给第三个结构体的b赋值为'C'
    for (int i = 0; i < 3; i++) {
        printf("p[%d].a = %d, p[%d].b = %c\n", i, p[i].a, i, p[i].b); //打印每个结构体的a和b
        printf("p + %d = %p\n", i, p + i); //打印每个结构体的地址
    }
    free(p); //释放空间
    return 0;
}
相关推荐
AlfredZhao8 小时前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户97183563346614 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪15 小时前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠1 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush41 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5201 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩1 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
古城小栈1 天前
Unix 与 Linux 异同小叙
linux·服务器·unix
凡人叶枫1 天前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++
2601_961875241 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant