#include <stdlib.h>
#include <stdio.h>
struct DynamicIntArray {
public:
// 数组当前元素个数和用于存储数据的指针
int dataCount = 0;
int* arrayData = NULL;
void add(int newData) {
int* newArray = (int*)malloc((dataCount + 1) * sizeof(int));
if (newArray == NULL) {
printf("内存分配失败!\n");
return;
}
if (arrayData != NULL) {
for (int i = 0; i < dataCount; i++) {
newArray[i] = arrayData[i];
}
free(arrayData);
}
arrayData = newArray;
arrayData[dataCount++] = newData;
}
void printArray() {
if (arrayData == NULL || dataCount == 0) {
printf("没有可打印的元素。\n");
return;
}
for (int i = 0; i < dataCount; i++) {
printf("%d ", arrayData[i]);
}
}
~DynamicIntArray() {
free(arrayData);
}
};
int main() {
DynamicIntArray arrayObj;
arrayObj.add(3);
arrayObj.add(5);
arrayObj.add(7);
arrayObj.printArray();
printf("\n%d byte",sizeof(arrayObj.arrayData));
return 0;
}
按范例抄的,为什么第二行打印的是8而不是12
#include <stdio.h>
struct DynamicIntArray {
public:
// 数组当前元素个数和用于存储数据的指针
int dataCount = 0;
int* arrayData = NULL;
void add(int newData) {
int* newArray = (int*)malloc((dataCount + 1) * sizeof(int));
if (newArray == NULL) {
printf("内存分配失败!\n");
return;
}
if (arrayData != NULL) {
for (int i = 0; i < dataCount; i++) {
newArray[i] = arrayData[i];
}
free(arrayData);
}
arrayData = newArray;
arrayData[dataCount++] = newData;
}
void printArray() {
if (arrayData == NULL || dataCount == 0) {
printf("没有可打印的元素。\n");
return;
}
for (int i = 0; i < dataCount; i++) {
printf("%d ", arrayData[i]);
}
}
~DynamicIntArray() {
free(arrayData);
}
};
int main() {
DynamicIntArray arrayObj;
arrayObj.add(3);
arrayObj.add(5);
arrayObj.add(7);
arrayObj.printArray();
printf("\n%d byte",sizeof(arrayObj.arrayData));
return 0;
}
按范例抄的,为什么第二行打印的是8而不是12
