C语言基础十一 ——指针3

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<Windows.h>

int fun(char str[]);
int main()
{
//多重指针(多级指针)——指向指针的指针
{ int a, *p1, **p2;//定义整型变量、整型指针变量、整型二级指针
p1 = &a;
p2 = &p1;//二级指针指向指针的地址
int *p[4];//定义指针数组
p2 = p; }//二级指针指向指针数组
//动态内存分配——用户按需向系统申请内存空间
//malloc(size);//向系统申请大小为“size”的void类型指针内存空间
{
int *p, n;
scanf("%d", &n);
p = (int*)malloc(n * sizeof(int));//开辟n个int大小的连续int型内存空间并将首地址给p
printf("%p\n", p);
free(p);//结束使用后释放malloc申请的空间(很重要)
printf("%p\n", p);
}
//calloc开辟数组空间
{
int(*p)[4];
p = (int(*)[4])calloc(12, sizeof(int));//开辟大小为12个int,列数为4的数组空间
free(p);
}
//realloc重新分配malloc、calloc开辟的空间(如果当前位置没有足够大的连续空间,则重新开辟空间,并把数据转移到新空间)
//realloc(指针,修改后大小)
{
int *p;
p = (int*)malloc(5 * sizeof(int));
realloc(p, 6 * sizeof(int));
free(p);
}
//结构体指针——指向结构体的指针
//结构体名 *指针名
{
struct
{
int ID;
char *name;
}*p,s;
p = &s;
(*p).ID = 123;//指针引用结构体成员并赋值
p->name = "张三";//指针引用结构体成员并赋值
printf("%d\n", p->ID);//指针引用结构体成员并输出
printf("%s\n", (*p).name);//指针引用结构体成员并输出
}
//内存四区
//1.栈区 存放形参、局部变量等
//2.堆区 用于动态内存申请与释放
//3.全局区 存放常量、全局变量、静态变量
//4.代码区 存放可执行代码
system("pause");
return 0;
}

 

posted @ 2021-01-11 13:21  初学者(another)  阅读(96)  评论(0)    收藏  举报