本笔记是截取的郝斌老师的课程大纲;
本笔记包括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 *