第九弹—指针详解

简介: 第九弹—指针详解
隔了好久才敢提笔写下指针~下面就是我个人对指针的理解,希望对大家有所帮助

内存和地址的关系

内存可以理解为一个个链接的房间,为了更快更方便的寻找到自己要找的房间,那么就会有房间号,此时房间号就可以理解为指针。

故内存的编号地址指针

指针变量和地址

创建一个变量只能如果想要获得它的地址就需要使用&(取地址操作符)。通过取地址就能获得变量的首元素地址。 在内存中地址是连续存放的,那么只要获得首元素地址,就可以顺藤摸瓜获得整个元素地址。

int main()
{
int a=10;
int* p=&a;
return 0;
}

该段代码中,int* 代表的是int 型的指针 p就代表了指针变量。

如果你获得了一个指针变量的地址,你需要通过指针更改指针变量中的数据,这时就需要使用到*(解引用操作符)

int main()
{
int a=0;
int* p=&a;
*p=0;//此时a就变成了0
return 0;
}

指针变量的大小:

指针变量在32位系统下 指针大小均为4字节(32位有32个地址而1字节8bit,那么就要有4个字节来存放地址,64位同理),在64位系统下指针大小为8字节。

指针变量类型的意义

指针的类型决定了指针向前或者向后步长(前进或后退几个字节)

const 修饰指针

const如果放在*的左边,修饰的是指针指向的内容,保证指针指向的内容不能通过指针来改变。但是指针变量本⾝的内容可变。

const如果放在*的右边,修饰的是指针变量本⾝,保证了指针变量的内容不能修改,但是指针指向的内容,可以通过指针改变。

意义:如果有些指针你不想要它被更改,但有时你又会忘记它不能修改,此时使用const修饰,如果你更改了它就会报错。

相关文章
|
7天前
|
C语言
链栈的初始化以及用C语言表示进栈、出栈和判断栈空
链栈的初始化以及用C语言表示进栈、出栈和判断栈空
15 3
【剑指offer】-栈的压入、弹出序列-20/67
【剑指offer】-栈的压入、弹出序列-20/67
|
5月前
牛客网-栈的压入、弹出序列
牛客网-栈的压入、弹出序列
18 0
|
10月前
|
C语言
【数据结构】链栈的基本操作C语言完整代码(初始化,判栈空,入栈,出栈,取栈顶元素,求栈长)
【数据结构】链栈的基本操作C语言完整代码(初始化,判栈空,入栈,出栈,取栈顶元素,求栈长)
262 0
|
11月前
|
C语言
c语言实现栈(顺序栈,链栈)(上)
c语言实现栈(顺序栈,链栈)
134 0
|
11月前
|
存储 缓存 C语言
c语言实现栈(顺序栈,链栈)(下)
c语言实现栈(顺序栈,链栈)
96 0
|
11月前
剑指offer_栈和队列---栈的压入,弹出序列
剑指offer_栈和队列---栈的压入,弹出序列
37 0
|
11月前
剑指offer 30. 栈的压入、弹出序列
剑指offer 30. 栈的压入、弹出序列
38 0
|
12月前
|
存储
栈的介绍以及使用数组模拟栈的入栈和出栈
栈的介绍以及使用数组模拟栈的入栈和出栈
86 0