C语言学习10

1.经常容易混淆的指针

第一组:

1.int *a【10】;

这是一个指针数组,数组a中有10个整型指针变量

a【0】~a【9】

常用于保护多个字符串

2.int(*a)【10】

注意:*与a先结合,说明是指针变量,后面有中括号,说明他是一个指向数组的指针;

常用于定义一个行指针,用于保存二维数组的地址,二维数组的形参可以定义为数组指针变量

3.int **p;

这是一个指针的指针,保存指针变量的地址,也称二级指针,搭配指针数组使用

第二组:

1.只读指针变量

2.只读变量指针

第三组:

1.int *f(void);

注意:f没有用括号括起来,说明f是一个函数,*修饰返回值类型,因此是指针函数

它是一个函数声明,声明这个函数的返回值为int*类型的

2.int (*f)(void);

注意:*f用括号括起来了,*修饰f说明,f是一个指针变量,因此是函数指针

f是个函数指针变量,存放函数的地址,他的指向的函数必须有一个int类型返回值,没有参数

2.动态内存申请

1.动态内存分配的概念

1.静态分配:

在编译或运行时,按照事先规定的大小分配空间,如int a【10】,系统自动分配

必须事先指定所需空间大小

分配在栈区或全局变量,一般以数组形式

按计划分配

2.动态分配

在程序运行中,根据需要的大小自由分配空间,需要程序员自己分配

分配在堆区,一般使用特定的函数进行分配

按需分配

3.动态分配函数

1.malloc函数:开辟一片连续的内存空间,需要手动初始化

语法:指针变量接受=malloc(需要开辟空间大小字节数)

            指针变量接受=malloc(元素类型字节数*元素个数)

注意变量的类型需要开辟所需的数据类型保持一致

2.free函数

free(指针变量)

3.colloc函数

开辟一片连续的内存空间,自动初始化为0

语法:指针变量=calloc(元素个数,元素类型所占字节数)

4.recalloc函数:重新分配内存空间大小,主要进行拓展内存空间

语法:指针变量接受=recalloc

4.内存泄漏

概念:申请的内存,首地址丢失,找不到了,再也没有办法使用,也没有办法释放,这块内存就泄露了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值