Day1 数据结构

#include 
#include 
#include 

int *space(int num) //函数space用来申请num个字节的空间
{
	int *p=(int *)malloc(sizeof(int)*num);  //用malloc申请空间
	return p;  //返回申请的空间地址
}

int get(int *p) //函数get 用来输入学生的成绩
{
	int i;  //定义了循环变量i
	printf("请输入学生的成绩\n");  //终端提示信息
	for(i=0;i<6;i++)  //for循环
	{
		scanf("%d",(p+i));  //输入学生成绩
	}
}

int out(int *p)  //函数out 用来输出学生的成绩
{	
	int i;
	printf("输出学生成绩\n");
	for(i=0;i<6;i++)  
	{
		printf("%-3d",p[i]);  //输出学生成绩
	}
	putchar(10);   //换行
}

int up(int *p)     //函数up 用来实现冒泡排序进行的升序
{
	int i,j;
	int temp;
	for(i=1;i<6;i++)    //外层循环控制判断的次数
	{
		for(j=0;j<6-i;j++)   //内存循环判断比较的次数
		{
			if(p[j]>p[j+1])
			{
				temp=p[j];
				p[j]=p[j+1];  //三杯水交换
				p[j+1]=temp;
			}
		}
	}
}

int myfree(int *p)    //函数myfree用来释放自己手动申请的堆区空间
{
	if(p!=NULL)        //判断指针指的是不是空地址 如果是就结束,如果不是空地址就让指针指向空地址 防止野指针  
	{
		free(p);    //free函数释放空间
		p=NULL;
	}
}
int main(int argc, const char *argv[]) 
{
	int num;   //定义要输入的学生个数
	scanf("%d",&num);   
	int *p=space(num);  //指针p来指向申请的空间地址
	get(p);   //调用输入学生成绩函数
	up(p);    //调用冒泡升序函数
	out(p);   //调用输出学生成绩函数
	myfree(p); //调用释放手动申请的堆区空间的函数
	p=NULL;  //防止p成为野指针
	return 0;
}

 

#include 
#include 
#include 

int main(int argc, const char *argv[])
{
	int *p1=(int *)malloc(4);  //向堆区申请了四个字节的空间并用指针p1指向
	printf("*p1=%d\n",*p1);   //输出p1的内容 随机值
	int *p2=(int *)malloc(sizeof(int));  //向堆区申请了一个int类型数据大小的空间并用指针p2指向它
	*p2=25;  //让p2指向的地址内的内容等于25
	printf("*p2=%d\n",*p2); //输出p2保存的地址内的值  25
	int *p3=(int *)malloc(sizeof(int)*5); //向堆区申请了五个int类型数据大小的空间并用指针p3指向它
	for(int i=0;i<5;i++)  //for 循环
	{
		printf("%d\t",*(p3+i));  //输出p3保存的地址内的值  是随机值
	}
	printf("\n");  // 换行
	free(p1);  //手动释放p1指向的地址的空间
	p1=NULL;   //p1指针还在防止它野指针
	free(p2);
	p2=NULL;
	free(p3);
	p3=NULL;

	return 0;
}
#include 
#include 
#include 

int main(int argc, const char *argv[])
{
	int a;    //定义普通变量
	int *p;   //定义指针类型变量
	int arr[3];   //定义数组类型变量
	int *p[3];   // 定义指针数组
	int (*p)[3];   //定义数组指针变量
	int (*p)(int,int);  //定义函数指针变量
	int (*p[3])(int.int);  //定义函数指针数组的指针变量
	int **p;   //定义二级指针
	return 0;
}
#include 
#include 

int main(int argc, const char *argv[])
{
	int ;    //定义普通数据类型
	int *;   //定义指针类型
	int [3];   //定义数组类型
	int *[3];   // 定义指针数组
	int (*)[3];   //定义数组指针
	int (*)(int,int);  //定义函数指针
	int (*[3])(int.int);  //定义函数指针数组的指针
	int **;   //定义二级指针
	return 0;
}

 

#include 
#include 

int main(int argc, const char *argv[])
{
	typedef int A;    //重定义普通变量
	typedef int *P;   //重定义指针类型变量
	typedef int ARR[3];   //重定义数组类型变量
	typedef int *P[3];   // 重定义指针数组
	typedef int (*P)[3];   //重定义数组指针变量
	typedef int (*P)(int,int);  //重定义函数指针变量
	typedef int (*P[3])(int.int);  //重定义函数指针数组的指针变量
	typedef int **P;   //重定义二级指针
	return 0;
}
#include 
#include 
#include 

int m;                  //未初始化的全局变量,在全局区的.bss段
int n = 5;            //已初始化的全局变量,在全局区的.data段
static int k;           //未初始化的静态变量,在全局区的.bss段
static int l = 26;     //已初始化的静态变量,在全局区的.data段

char arr[30] = "hello world";  //arr数组在全局取的.data段,而"hello world"在.ro段
char *p = "hello";              //指针在.data段,而“hello”在.ro段

int main(int argc, const char *argv[])
{
    double b = 29.01;    //局部变量在栈区申请
    int a;               //局部变量,在栈区申请,初始值为随机值
    static int c;        //静态局部变量,在全局区的.bss段申请
    static int d = 12;  //静态局部变量,在全局区的.data段
    char *q = "nihao";   //q在栈区申请的8字节,但是"nihao"在全局区的.ro段
    char e[30] = "hello world";  //数组在栈区申请,"hello world"在全局区的.ro段
    int *ptr = (int *)malloc(sizeof(int));  //ptr是在栈区,而申请的空间在堆区
    
    return 0;
}
#include 
#include 
#include 

typedef unsigned short int uint16;     //将无符号短整形重命名为uint16

typedef int * Ptr_i;          //将int*类型重命名为Ptr_i

typedef char String[10];          //将char [5]类型重命名为String

int main(int argc, const char *argv[])
{
    uint16 num = 520;           //等价于unsigned short int num = 520
    printf("sizeof num = %ld\n", sizeof(num));          //2
    printf("num = %d\n", num);               //520

    Ptr_i p1 = NULL;            //此时p1是指针变量  int *p1;
    printf("sizeof p1 = %ld\n", sizeof(p1));        //8

    String s1;           //此时是定义的长度为10的字符数组
    strcpy(s1, "hello");
    printf("s1 = %s\n", s1);         //hello
    printf("sizeof s1 = %ld\n", sizeof(s1));      //10
    printf("strlen s1 = %ld\n", strlen(s1));       //5
    
    return 0;
}

#include

typedef int *Ptr_i, int32;    //int32是一个int类型的重命名
                           //Ptr_i是int*类型的重命名

int main(int argc, const char *argv[])
{
    int32 num;          //num是一个普通变量
    Ptr_i p;              //p是一个int×类型的变量

    printf("sizeof num = %ld\n", sizeof(num));      //4
    printf("sizeof p = %ld\n", sizeof(p));      //8

    return 0;
}
#include

struct Hero   //声明一个英雄结构体类型
{
    char name[20];      //姓名
    int Hp;            //血量
    double speed;        //基础位移
    int kill;            //人头数
}h3 = {"亚瑟", 2800, 450, 5};
int main(int argc, const char *argv[])
{

    //使用英雄类型定义一个英雄变量
    struct Hero h1 = {"亚索", 650, 350, 0};  //此时定一个英雄变量h1

    //定义英雄变量,指定某个成员进行赋值
    struct Hero h2 = {.Hp=2000, .speed = 1000};

    return 0;
}
#include 
#include 
#include 

struct Hero
{
	char name[20];    //姓名
	int Hp;         //血量
	double speed;     //基础移速
	int kill;       //人头数
};

struct Thing
{
	char name[20];    //商品名称
	char position[20];   //商品产地
	double price;  //单价
	float weight;    //重量
};


int main(int argc, const char *argv[])
{
	struct Thing s;
	scanf("%s",s.name);     //输入商品名字
	scanf(" %s",s.position); //输入商品产地
	scanf(" %lf",&s.price);  //输入商品价格
	scanf(" %f",&s.weight);  //输入商品重量
	printf("商品名称:%s\n",s.name);  //输出商品名字
	printf("商品产地: %s\n",s.position); //输出商品产地
	printf("单价:%lf\n",s.price);   //输出商品价格
	printf("重量:%lf\n",s.weight);   //输出商品重量
	return 0;
}

2、思维导图

 

你可能感兴趣的:(数据结构)