C语言指针

简介:



变量的 直接访问 方式

     按变量的地址(变量名/变量的外号) 存取变量的值

image

变量的 间接访问 方式

     将变量的地址放在另一个内存单元中,先到另一个内存单元中取得变量的地址,再由变量的地址找到变量并进行数据存取

 

image 

image

变量Pointer是一个指针变量(本身是一个变量),它存储的是另一个变量的内存地址(i的内存地址),我们说pointer指向i

一个变量存储了另一个变量的内存地址,我们说它指向i(另一个变量)

什么是指针

指针的概念:一个变量的地址称为该变量的指针

指针变量:专门用于存储其它变量地址的变量

指针与指针变量的区别,就是变量值与变量的区别

image

指针变量的三要素

  • 指针变量的类型 :和其所指变量的类型一致
  • 指针变量的值:另一个变量在内存的地址
  • 指针变量的名字:起法同普通变量

指针变量的赋值:

float *p1=p1的地址

方式一:指针变量名 =&变量名; &->取地址符

方式二:通过另一个指针变量赋值

int i ,*p1,*p2; //声明一个变量i,指针p1和指针p2

赋值方式一:p1=&i

赋值方式二:p2=p1

image

指针的运算

1、算术运算

例如:int *p,i;

char *q,c;

p=&i;

q=&c;

内存地址示意义如下:

image

int 型占据 2个字节,char型占据1个字节

求: p++ ,q++

p++ 即 i的地址移1位(2个字节)

image

q++,即c的地址移动1位(1个字节)

image

2、比较运算

数组的名称就是一个指针

image

3、两个运算符

*:求其后内存地址中的内容

&:求变量的内存地址

image 

image

pointer_1指向a,pointer_2指向b

 

-----------------------  分割线 ---------------------

image

练习

问:若已执行了 pointer_1=&a,则:&*pointer_1的含义是什么?

答:pointer_1=&a ,这时pinter_1存储的是 a的地址,

*pinter_1 是取指针所指向的值,也即 a

所以 &*pinter_1 就是取 a的地址,相当于 &a

*取内容,&取地址,两者是互异的,互相抵消

问:*&a的含义是什么?

答:&a取的是地址,*地址取的是内容,所以*&a 就是a

问:(*pinter_1)++相当于什么?

答:*pointer_1 是取pointer_1所指向的值,所以这里相当于 a++

本文转自赵青青博客园博客,原文链接:http://www.cnblogs.com/zhaoqingqing/p/3916534.html,如需转载请自行联系原作者

相关文章
|
15天前
|
存储 C语言
C语言 — 指针进阶篇(下)
C语言 — 指针进阶篇(下)
20 0
|
15天前
|
存储 C语言 C++
C语言 — 指针进阶篇(上)
C语言 — 指针进阶篇(上)
26 0
|
21天前
|
存储 程序员 C语言
C语言指针的概念、语法和实现
在C语言中,指针是其最重要的概念之一。 本文将介绍C语言指针的概念、语法和实现,以及如何使用它们来编写高效的代码。
13 0
|
22天前
|
存储 C语言
【C语言】深入解开指针(三)2
【C语言】深入解开指针(三)
|
22天前
|
存储 程序员 C语言
【C语言】深入解开指针(二)2
【C语言】深入解开指针(二)
【C语言】深入解开指针(二)2
|
22天前
|
存储 C语言
【C语言】深入解开指针(一)1
【C语言】深入解开指针(一)
|
23天前
|
C语言 索引
基于C语言的函数指针应用-消息命令处理框架
基于C语言的函数指针应用-消息命令处理框架
11 0
|
30天前
|
存储 人工智能 编译器
C语言指针详解
指针运算,指针和数组,二级指针
C语言指针详解
|
30天前
|
存储 C语言
C语言第二十四弹---指针(八)
C语言第二十四弹---指针(八)
|
30天前
|
编译器 C语言
C语言第十九弹---指针(三)
C语言第十九弹---指针(三)