#include <stdio.h>
#include <stdlib.h>
// 定义结构体
typedef struct {
int *array;
int size;
} MyStruct;
// 定义函数
void modifyArray(MyStruct *s) {
// 动态分配新数组内存
int *newArray = (int *)malloc(2 * s->size * sizeof(int));
if (newArray == NULL) {
fprintf(stderr, "内存分配失败\n");
return;
}
// 复制原数组元素到新数组前半部分
for (int i = 0; i < s->size; i++) {
newArray[i] = s->array[i];
}
// 设置新数组后半部分元素为前半部分对应位置元素的相反数
for (int i = 0; i < s->size; i++) {
newArray[i + s->size] = -s->array[i];
}
// 释放原数组内存
free(s->array);
// 修改结构体中的指针指向新数组
s->array = newArray;
s->size = 2 * s->size;
}
int main() {
MyStruct s;
s.size = 3;
s.array = (int *)malloc(s.size * sizeof(int));
if (s.array == NULL) {
fprintf(stderr, "内存分配失败\n");
return 1;
}
// 初始化原数组
s.array[0] = 1;
s.array[1] = 2;
s.array[2] = 3;
modifyArray(&s);
// 打印新数组
for (int i = 0; i < s.size; i++) {
printf("%d ", s.array[i]);
}
printf("\n");
// 释放新数组内存
free(s.array);
return 0;
}