从零开始的c语言#指针初阶01-创新互联

##从零开始的c语言#指针初阶01

创新互联建站专注于莫力达企业网站建设,响应式网站建设,成都商城网站开发。莫力达网站建设公司,为莫力达等地区提供建站服务。全流程按需设计,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务

1. 什么是指针
指针是编程语言中的一个对象。
指针是内存中一个最小单元的编号,也就是地址(一个小的单元是一个字节)
口语所说的指针,通常是指针变量,是用来存放内存地址的变量
一个标准的指针
指针的大小在32位平台是4个字节,在64位平台上是8个字节(32个bit位为四个字节,64个bit为八分字节)

2. 指针的类型

三种不同类型的指针变量
运行的结果
指针的类型不同但是他们所占的空间都是八个字节
(在32位平台是4个字节,在64位平台上是8个字节)

在这里插入图片描述
不同指针类型决定了指针向前或者向后走一步有多大
(一个单元是一个字节,int是整形,开辟了四个字节的空间,char是字符,开辟了一个字节的空间
所以int表示向前或者先后四步,char表示向前或者先后走一步)
不同指针的访问权限不同
例如一个int的变量放到char类型里面去的话就只能访问一个字节
在这里插入图片描述
在这里插入图片描述
1.int
是一个整形一个整形的去访问(即四个字节为一组)
2.char*是一个字符一个字符的去访问(即一个字节为一组)

总结:
1.指针类型决定了,对指针解引用的时候有多大的权限(能操作几个字节)
(比如:char的指针解引用就只能访问一个字节,而int的指针的解引用就能访问四个字节)
2.指针类型决定了,指针向前或者向后走一步有多大
(指针向前或者向后走一步有多大,与指针类型所对应开辟的空间有关)

4.野指针
野指针的概念:野指针就是指针指向的位置是不可知的(随机的,不正确的,没有限制的)

指针未初始化和指针访问越界
空间释放

野指针成因:
1.指针未初始化(局部变量不初始化的话,默认是随机值)
2.指针访问越界
3.指针指向的空间释放(指针指向一个放在自定义函数的变量的时候,当函数返回后函数中变量所开辟的空间释放)

指针初始化
要注意指针的初始化(当前不知道p应该初始化为什么地址的时候,直接初始化为NULL)
NULL
(NULL表示的意思是0)
规避野指针
如何规避野指针:
1.指针初始化(当前不知道p应该初始化为什么地址的时候,直接初始化为NULL)
2.小心指针越界(编译器指针越界以后是不会提醒的)
3.指针指向空间释放即使置NULL
4.在使用指针之前检查有效性

5.指针的运算

int main()
{int arr[10] = {1,2,3,4,5,6,7,8,9,10 };
	int* p = arr;
	int* pend = arr + 9;
	while (p<= pend)
	{printf("%d", *p);
		p++;
	}
	return 0;
}

指针的±整数(与指针的类型有关)

指针减指针
指针-指针
得到的是两个指针之间的元素个数

在这里插入图片描述
指针相减的前提是两个指针指向同一个空间(指针的相加无意义)

**

6.指针和数组

**
1.数组名表示的是数组首元素的地址

在这里插入图片描述
2.指针数组及用来存放指针的数组

7.二级指针
二级指针
pa是指针变量,一级指针(只有一层指向关系)
pa也是变量,&pa取出pa在内存中的起始地址
ppa就是一个二级指针变量(ppa有两层指向关系)
在这里插入图片描述
a的地址存放在pa中,pa的地址存放在ppa中。
pa是一级指针,而ppa是二级指针

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站栏目:从零开始的c语言#指针初阶01-创新互联
分享路径:http://ybzwz.com/article/dhidhi.html