回顾了一下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;
}