封装一个函数 hqyj_init 函数有一个参数n 函数功能是 在堆区 分配n个 int大小的空间 并在对应的内存空间中分别存储 123 ... n 并将分配的空间的首地址给到函数的调用处 调用函数结束后 打印 内存空间中的内容
时间: 2024-10-19 19:05:00 浏览: 11
封装一个名为 `hqyj_init` 的函数,它接受一个整数参数 `n`,主要用于在堆区动态分配 `n` 个 `int` 类型的连续内存空间,并初始化这些内存区域的内容,从1依次存储到 `n`。这个函数会返回分配内存的起始地址,以便后续操作。
函数原型可能会像这样:
```c
void* hqyj_init(int n);
```
实现这个函数的示例代码(假设使用 C 语言):
```c
#include <stdio.h>
#include <stdlib.h>
// 功能:分配 n 个 int 类型的内存并初始化
void* hqyj_init(int n) {
// 检查输入是否合法
if (n <= 0 || n > INT_MAX / sizeof(int)) {
printf("Invalid input: n must be a positive integer less than or equal to %d\n", INT_MAX / sizeof(int));
return NULL;
}
// 在堆上分配内存
void* ptr = malloc(n * sizeof(int));
// 如果内存分配失败,释放已分配部分并返回NULL
if (!ptr) {
perror("Memory allocation failed");
exit(1);
}
// 初始化内存
for (size_t i = 0; i < n; i++) {
*(int*)(ptr + i) = i + 1;
}
// 返回内存起始地址
return ptr;
}
// 示例:调用函数并打印结果
int main() {
int n = 5; // 可以根据需要更改此值
void* allocated_memory = hqyj_init(n);
if (allocated_memory) {
printf("Memory contents:\n");
for (size_t i = 0; i < n; i++) {
printf("%d ", *(int*)allocated_memory + i);
}
printf("\n");
// 释放内存
free(allocated_memory);
} else {
printf("Memory not initialized.\n");
}
return 0;
}
```
阅读全文