C语言:初识指针

1.什么是指针?

在编程里,指针是一种特殊的数据类型,其存储的并非普通的数据值,而是内存地址。通过指针,能够直接对该内存地址中的数据进行访问和操作。

指针是一种特殊的数据类型
int–>整形
float–>浮点型
指针–>地址

指针的大小取决于操作系统的位数。常见的操作系统位数有 32 位和 64 位,不同位数系统下指针大小不同:
32 位操作系统:指针大小为 4 字节。
64 位操作系统:指针大小为 8 字节

2.指针与指针变量的区别?

指针是一种数据类型,而指针变量是数据类型为指针的变量。

int a=0;//int是整形,a是整形变量
float b=1.0;//float是浮点型,b是浮点型变量
int* c;//int*是指针,c是指针变量

3.*的作用

1.用于创建指针变量(作用对象为非指针变量)

int A;
char B;
float C;
int* a=&A;//创建指针变量a并将A的地址赋给a
char* b=&B;//创建指针变量b并将B的地址赋给b
float* c=&C;//创建指针变量c并将C的地址赋给c

若只创建指针变量而不赋地址,则该指针为野指针,会导致非法访问。

2.解引用操作符即用于访问内存(作用对象为指针变量)

int a=1;
int* b=&a;//取出a的地址并赋给指针变量b
printf(“%d”,*b);//访问b所储存的地址即访问a的地址,得到a的值

4.不同类型指针的区别?

不同类型指针的区别在于访问空间的步长不同
下面我们来举例说明:

char str[]=“hello world”;//我们知道数组名可以代表首元素的地址
char* p1=str;//把h的地址赋给char* 类型的p1
int* p2=str;//把h的地址赋给int*类型的p2

p1+1即e的地址,p2+1即o的地址。
*p1访问的是地址为h,大小为一个字节的内存;
*p2访问的是地址为h,大小为四个字节的内存。

5.数组指针和指针数组的区别?

1.数组指针:数组指针是指向某个数组的指针。

int (*num)[10];//num是指向一个有10个整形的数组的指针

我们可以拆分着来看:
( * num)–>创建变量名为num的指针变量
int [10]–>指向的对象为含有10个整形的数组
num访问内存的步长为sizeof(数组)

2.指针数组:数组元素类型为指针的数组。

int * num[10];// * 和num没有用括号连接,[]的优先级高于*,所以num先于[10]连接
num[10]指明是数组
int* 指明数组元素类型是int *

6.多级指针

下面我们以二级指针为例:
二级指针:即用一个指针来存放另一个指针的地址:

int a=1;
int* p=&a;//创建指针变量p存放a的地址
int** pp=&p;//创建二级指针变量pp存放p的地址

我们同样可以拆分着来看:
*pp表明pp是一个指针;
int * 表明pp指向的对象是一个指针。

*pp;//得到p
**pp;//得到a的值

                          *如有错误,欢迎纠正。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值