【笔】可变数组——的一些东西【MOOC】

正经的代码:



#include <stdio.h>
#include <stdlib.h>



typedef struct {
	int *array;
	int size;
} Array;





Array array_create(int init_size){
	Array a;
	a.size = init_size;
	a.array = (int *)malloc(sizeof(int) * a.size);
	return a;
}	

//如果是返回一个指针?
Array* array_createeee(Array *a, int init_size)
{
//	但是想想
//	传入的数组是NULL?
//	a=NULL?
//	或者是 
//	a之前是指另一个已经开过的数组?
//	所以 不要返回指针!!!
}





void array_free(Array *a)
{
	free(a->array);
	a->array = NULL;
	a->size = 0;
//	这里 free NULL 和 0 是无害的
}		
	



int array_size(const Array *a)
{
	return a->size;
}		

int * array_at(Array *a,int index)
{
	return &(a->array[index]);
}	
//这里返回的是指针
//	因为在main函数里面可以直接对 index上面的数组 进行赋值
//	如果不是指针 
//	那么对这个返回的东西就是无意义的	

//如果不想这样 可以选择:
int array_get(const Array *a, int  index)
{
	return a->array[index];
}
void array_set(Array *a, int index, int value)
{
	a->array[index] = value;
}
//也可以。



void array_inflate(Array *a, int more_size)
{
	int *p = (int*)malloc(sizeof(int)(a->size+more_size));
	for(int i=0;i<a->size;i++){
		p[i] = a->array[i];
	}
	free(a->array);
	a->array = p;
	a->size += more_size;
}


int main(int argc, char *argv[]) {
	Array a = array_create(100);
	
	printf("%d\n", array_size(&a));
	printf("%d\n", a.size);
	
	*array_at(&a,0) = 10;
	printf("%d\n", *array_at(&a, 0));
//	两种printf表示size的方式都可以
//	但是 对于一些复杂的程序
//	array_size(&a):相当于是 :封装
	
	int number;
	int cnt = 0;
	while(1){
		//scanf("%d",&number);
		//*array_at(&a, cnt++) = munber;
//		上面的两句可以等于下面的一句;
		scanf("%d",array_at(&a, cnt++));
	}
	array_free(&a);
}

emmmmmmmmm~

有这些
Interface :
n. (人机)界面(尤指屏幕布局和菜单) ; 接口; 接口程序; 连接电路; (两学科、体系等的) 接合点,边缘区域;
v. (使通过界面或接口) 接合,连接;

有这些函数:

Array array_create(int init_size); 			//创造一个数组
void array_free(Array *a);					//释放一个数组的内存
int array_size(const Array *a);				//这个数组有多少个内存
int * array_at(Array *a,int index);			//返回index数组的值
void array_inflate(Array *a, int more_size);//把数组变大

//有一个小技巧:
//先开一个新的界面
//上面 一开始先写
//第一个文件:---------------------------------------------------
//名字:array.h

#ifndef _ARRAY_H_
#define _ARRAY_H_

//然后是:
typedef struct {
	int *array;
	int size;
} Array;


//然后是 函数的定义 首次出现的:
Array array_create(int init_size); 			
void array_free(Array *a);					
int array_size(const Array *a);				
int * array_at(Array *a,int index);			
void array_inflate(Array *a, int more_size);

//最后是
#endif

//第二个文件:----------------------------------------------------

//名字:array.c

//把第一个的复制过里:
//变成这样:
//因为struct 是用来注释的:所以把他://

//typedef struct {
// int *array;
// int size;
//} Array;

#include "array.h"
Array array_create(int init_size); 			
void array_free(Array *a);					
int array_size(const Array *a);				
int * array_at(Array *a,int index);			
void array_inflate(Array *a, int more_size);


//之后就可以开始写函数了
Array array_create(int init_size){
	Array a ;
	a.size = 
}




#include <stdio.h>

typedef struct {
	int *array;
	int size;
} Array; 
//这里不是*Array 因为如果是*的话 之后的调用函数 虽然传入函数可以写的简单些 不用带*好穿入 但是在函数里面 无法直接开出一个array数组进行操作 
void array_free()


信息素养是指一个人对信息的获取、评估、利用、创造和分享的能力。在当今信息时代,信息素养已成为学术研究的必修课。 首先,信息素养对于学术研究的重要性体现在信息获取的能力上。学术研究需要大量的信息支持和参考,优秀的学者往往是通过不断深入广泛的信息搜索才能够得到最新的研究成果。信息素养能够教会我们如何有效地利用各类信息资源,如图书馆、数据库、互联网等,帮助我们快速准确地找到所需的学术信息。 其次,信息素养还能够培养我们对信息的评估能力。学术研究要求我们具备对信息进行筛选和判断的能力,毕竟网络上虚假信息泛滥,学者需要具备辨别真伪信息的能力,以避免错误研究方向的选择。信息素养能够帮助我们了解如何评估信息的可信度、真实性和准确性,提高我们筛选信息的准确度和效率。 此外,信息素养还能够培养我们对信息的利用和创造能力。学术研究要求学者具备信息加工、整理、分析和应用的能力,只有掌握这些技能,才能够进行深度研究并为学术界做出贡献。信息素养能够教会我们如何有效地处理和利用大量的信息,帮助我们形成独立思考的能力,从而进行独到的学术创造。 最后,信息素养还能够培养我们对信息分享的意识和能力。学术研究需要与他人交流和共享,通过分享研究成果和与他人的交流互动,才能够得到更多的反馈和合作机会。信息素养能够教会我们如何利用各类工具和平台进行信息传播和分享,帮助我们与他人建立持续的学术合作关系。 综上所述,信息素养是学术研究的必修课,它能够提升我们信息获取、评估、利用、创造和分享的能力,帮助我们成为优秀的学术研究者。在当今信息时代,只有掌握了信息素养,才能够立足于学术研究的前沿。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值