c语言——指针初阶(1)

第一次写博客,咋看咋不顺眼,还请各位大佬口下留情,我也希望能从各位的评论中学到更多的知识。

目录

一、指针的基本定义

1.内存 :

 2.设一个指针变量,并对指针初始化:

二、指针类型

1.指针类型的意义:

 三、野指针

1.野指针的定义:

2.指针未初始化案例:

3.指针越界访问案例:

4.指针指向的空间释放案例:


 一、指针的基本定义

                        

1.内存 :

                

 2.设一个指针变量,并对指针初始化:

int main()
{
	int a = 0;
	int* pa = &a;
	*pa = 20;
	return 0;
}

指针大小:

在32位平台是4个字节,在64位平台是8个字节

二、指针类型

1.指针类型的意义:

 三、野指针

1.野指针的定义:

        指指针的位置是不可知的(随机的,不正确的,没有明确限制的),指针未初始化,越界访问以及指针指向的空间被释放,可能导致这样。

2.指针未初始化案例:

#include<stdio.h>
int main()
{
	1.局部变量不初始化
	int* p;//p是一个局部的指针变量,局部变量不初始化的话,默认是随机值
	*p = 20;//非法访问内存了,这里的p被称为野指针
	return 0;
}

3.指针越界访问案例:

#include<stdio.h>
int main()
{
    int arr[10] = { 0 };
	int* p = arr;
	int i = 0;
	for (i = 0; i <= 10; i++)
	{
		*p = i;
		i++;
	}
}

 当for循环,循环到10的时候,实际上是访问到了第十一个空间去了,而这第十一个空间不属于你申请的空间,所以不属于你,这时的这个指针便是野指针了。

4.指针指向的空间释放案例:

#include<stdio.h>
int* test()
{
	int a = 10;
return &a;
}
int main()
{
	int* p = test();
	*p = 20;
	return 0;
}

原本a申请了一块空间,然后由于生命周期的结束该空间被释放掉了,此时再想使用这块空间的指针还记录的是刚刚空间的地址,但是那块空间已经被释放了,已经不属于你了,再存入数据就会出现问题了,被看作野指针。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值