结构体+指针简单实现数组第一版
#include <stdio.h>#include <stdlib.h>
#include <malloc.h>
#include<stddef.h>
#include<stdbool.h>
/*定义一个struct Arr的数据类型,没有分配空间*/
struct Arr
{
int* pBase; /*存储的数组第一个元素的地址*/
int len;/*数组所能容纳的最大元素的个数*/
int cnt;/*当前数组的有效个数*/
};
void init_arr(struct Arr *array,int length); /*初始化数组*/
void show_arr(struct Arr* pArr);/*输出数组元素*/
int main()
{
struct Arr arr;/*初始化结构体变量,但是arr并不是有效的,内存为垃圾数字,需要init_arr初始化*/
init_arr(&arr,6);
show_arr(&arr);
return 0;
}
void init_arr(struct Arr *array,int length)
{
array->pBase = (int*)malloc(sizeof(int)*length);
if (NULL == array->pBase)
{
printf("动态内存分配失败!\n");
exit(-1);/*终止整个程序*/
}
else
{
array->len = length;
array->cnt = 0;
}
}
void show_arr(struct Arr* pArr)
{
for(int i=0;i<pArr->len;i++)
{
*(pArr->pBase+i) = i;
}
for(int i=0;i<pArr->len;i++)
{
printf("%d\n",*(pArr->pBase+i));
}
}
页:
[1]