指针(1.基础概念)

概念

        理解:指针主要是为了完成形参去改变实参的值,这种改变主要是通过改变地址和值的对应关系,而不是改变变量的地址的拥有

        总结:

                一维数组用普通的指针变量,二维数组用数组指针,字符串用字符指针;

                指针数组本质是一个数组,类似于字符数组;

  引入

                为函数修改实参提供支持;

                提供另一种访问内存方式;

                为动态内存管理提供支持;

                为动态数据结构提供支持;

  内存地址

                字节:内存容量单位,1byte = 8bit

                地址:便于内存管理,将内存划分为一个个内存单元(1字节),为区分每一个单元,进行编号

  基地址

                单字节数据:基地址为其字节编号

                多字节数据:基地址为所有字节中编号最小的

  空指针

    int *p = NULL;暂时指向一块安全区域,保证系统安全。

  野指针

                概念:指向一块未知区域

产生原因:
    1.指针定义后,未初始化;
    int *p;
	*p = 200;

	2.指针指向内存,被系统收回;
    int *p = malloc(200);
	free(p);	//释放空间,p仍旧指向原来的地址,p会变成野指针
	p = NULL;	//解决方案,指向零地址

	3.指针越界
    int a[10];
	a[10] = 666;	//越界

                使用指针变量之前要检验指针变量的有效性

int *p = NULL;
if(!p)
{
    return -1;
}
取指与指针
int a = 100, *p = &a;
	char c = 'a';
	printf("%p%p%d\n", &a, &c, *p);

        注意:

                不同变量尺寸不同,但地址尺寸(取决于系统的寻址范围)相同;

                不同的地址形式上相同,但内部的尺寸和类型不同;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值