C语言之指针、动态内存malloc()、结构体总结

本笔记是截取的郝斌老师的课程大纲;
本笔记包括C指针、动态内存、结构体和相关举例四部分;

郝斌老师的笔记简练而句句精辟!

一、C指针

在这里插入图片描述

二、动态内存malloc()

在这里插入图片描述

三、结构体

在这里插入图片描述

四、关于指针、结构体、动态内存、typedef的例子

例子1:

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

int main(void)
{
    
    
	int a[5] = {
    
    4, 10, 2, 8, 6};
	
	int len;
	printf("请输入你需要分配的数组的长度: len = ");
	scanf("%d", &len);
	int * pArr = (int *)malloc(sizeof(int) * len);
//	*pArr = 4;  //类似于 a[0] = 4;
//	pArr[1] = 10; //类似于a[1] = 10;
//	printf("%d %d\n", *pArr, pArr[1]);

	//我们可以把pArr当做一个普通数组来使用
	for (int i=0; i<len; ++i)
		scanf("%d", &pArr[i]);

	for (i=0; i<len; ++i)
		printf("%d\n", *(pArr+i));

	
	free(pArr);  //把pArr所代表的动态分配的20个字节的内存释放

	return 0;
}

例子2:跨函数使用内存

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

struct Student
{
    
    
	int sid;
	int age;
};

struct Student * CreateStudent(void);
void ShowStudent(struct Student *);

int main(void)
{
    
    
	struct Student * ps;

	ps = CreateStudent();
	ShowStudent(ps);

	return 0;
}

void ShowStudent(struct Student * pst)
{
    
    
	printf("%d %d\n", pst->sid, pst->age);
}

struct Student * CreateStudent(void)
{
    
    
	struct Student * p = (struct Student *)malloc(sizeof(struct Student));
	p->sid = 99;
	p->age = 88;
	return p;
}

例子3:typedef函数的使用

typedef int INT; // 相当于给int起了一个别名 INT
typedef struct Student
{
    
    
 int sid;
 char name[100];
 char sex;
} ST; //ST st 就相当于 struct Student st,给struct Student 起了别名ST,这样简洁了代码
typedef struct Student
{
    
    
 int sid;
 char name[100];
 char sex;
} * ST; //ST就相当于struct Student *

猜你喜欢

转载自blog.csdn.net/weixin_45519751/article/details/107869403
今日推荐