关于malloc,结构体的小例子

回顾了一下C语言中的malloc用法和结构体相关的知识点

/*
10点49分
测试malloc动态分配一维数组
测试动态内存分配的跨函数调用

*/

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

int test01()
{
	int* pAddr = NULL;
	int len = 0;
	printf("请输入需要分配的数组大小:");
	scanf("%d", &len);
	pAddr = (int*)malloc(sizeof(int) * len);

	//给动态申请的数组分配数值
	int i;
	for (i = 0; i < len; ++i)
	{
		scanf("%d", &pAddr[i]);
	}

	for (i = 0; i < len; ++i)
	{
		printf("%d ", pAddr[i]);
	}

	free(pAddr);

	system("pause");
	return 0;
}

//动态内存分配的跨函数调用
void func(int** p)
{
	//在这个函数内 对q进行一个赋值操作
	//**p = 5;		//error 没有分配一个内存 会存在错误
	*p = (int*)malloc(sizeof(int));
	**p = 5;
}

int test02()
{
	int* q = NULL;
	func(&q);
	printf("%d \n", *q);
	
	free(q);
	return 0;
}

/*
结构体变量和结构体指针变量作为函数参数传递
通过函数完成对结构体的输入和输出
一般通过结构体指针变量来进行参数的传递
*/

struct Student
{
	int age;			//4
	float score;		//8
	char name[19];		//21
};

typedef struct Student student;

void InputValueForStruct(student *std)
{
	std->age = 26;
	strcpy(std->name, "JamesWu");
	std->score = 99.9f;
}

void ShowStructValue(const student *std)
{
	printf("name:%s\nage:%d\nscore:%f\n", std->name, std->age, std->score);
}

int test03()
{
	student st;
	printf("Student结构体所占的字节数:%d\n", sizeof(st));
	InputValueForStruct(&st);
	ShowStructValue(&st);

	return 0;
}

/*
最简单的排序方法
冒泡排序法
*/

void sortArray(int* pArr, int len)
{
	int i, j, temp;
	for (i = 0; i < len-1; i++)
	{
		for (j = 0; j < len - i - 1; j++)
		{
			if (pArr[j] > pArr[j+1])	//大于表示升序 小于表示降序
			{
				temp = pArr[j];
				pArr[j] = pArr[j+1];
				pArr[j+1] = temp;
			}
		}
	}

}

void showArray(const int* pArr, int len)
{
	int i;
	for (i = 0; i < len; ++i)
	{
		printf("%d ", pArr[i]);
	}
	printf("\n");
}

int test04()
{
	int a[6] = { 10,2,3,4,5,6 };
	int i = 0;
	 
	sortArray(a, 6);
	showArray(a, 6);

	return 0;
}



 

Guess you like

Origin blog.csdn.net/Wuzm_/article/details/104396115
Recommended