数组与指针(2)


7.NULL代表意思

C语言中,

NULL0的值都是一样的,但是为了目的和用途及容易识别的原因,NULL用于指针和对象,0用于数值

 


8.void * (万能指针)

void 表示空,在C中只对函数的返回值和参数做限制

void* 表示任意类型指针,可以指向任意类型的数据

Void*不能对其解引用,也不能对其进行算数操作,在c中只能对确定的数据类型数据进行算数操作。

 


 9.野指针 及如何避免和造成的问题

野指针指向一个已删除的对象或未申请访问受限内存区域的指针

野指针不是空指针,它指向一个随机的空间。

一般指针变量没有初始化,就会产生野指针,创建一个指针时,应该立即让它指向一个特定的且合法的位置。释放一个指针后,要立即将其置为空。这样可以有效避免野指针的产生。

 


10.malloc calloc ralloc 函数使用

malloc原型:

void *malloc(long NumBytes)

功能:该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。

它一般要和free函数一起配合使用为了释放malloc函数分配的空间,将其还给程序或者是操作系统该函数原型如下:

void free(void *FirstByte)

calloc函数原型:

void *calloc(size_t n, size_t size)

功 能: 在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL

它和malloc区别在于:

calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据。

ralloc函数原型;
extern void *realloc(void *mem_address, unsigned int newsize);

功能:

首先判断当前指针的空间,足够,就扩大mem_address指向的地址,然后将mem_address地址返回;小了,先分配newsize大小的空间,将原来的数据依序拷贝进这个新分配的内存区域,此时,会自动释放mem_address所指向的内存区域,并将新分配区域的首地址返回。

 


 11.指针 数组的区别

数组对应着一块确定的内存区域,在静态存储区或者栈上被创建后,它的地址和容量在生存期内不会改变,然而它的数组内容是可以改变的。

指针是指向一块任意类型的内存,它更灵活可变。

                                   

                                                   

12.C为什么引入指针

指针的操作就是内存的操作,c引入指针可以提高效率,写出更加灵活的数据结构,是程序的编写更加紧凑、简洁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值