欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于c语言----------指针(一)

程序员文章站 2024-03-07 16:50:21
...

指针

① 指针是一个变量,在里面存放的是地址,一个地址标识一块空间。
② 指针的大小与指针类型无关,只和平台有关:在32位平台上为4个字节,64位平台为8个字节。
③ 指针加减整数时要根据指针的类型判断长短。

字符指针

用 char * 来定义的指针

char ch =  'a';
char *p = &ch;//在这里看出,p存储的是ch的地址

若是要存储字符串:

char *pstr = "hello world";
printf("%s ",pstr);//在这里,指针存储的是字符串的首地址

数组和指针

指针数组

指针数组是存放指针的数组,是数组,有以下几种形式

int *arr1[10];//整型指针的数组
char *arr2[10];//一级字符指针的数组
char **arr3[10];//二级字符指针的数组
数组指针

数组指针是指向数组的指针,是指针

int (*p)[ 10];//*p是一个指针,指向大小为10的整型数组
&arr 与 arr 的区别

我们知道,数组名代表数组首元素的地址,如果打印 arr
与 &arr 的值,我们会发现打印结果是相同的,但是两个含义不同,举个例子:
arr+1 指的是数组第一个元素的值
&arr+1 打印出来是跳过整个数组的值,因为&arr代表的是整个数组的地址,给他加一就相当于在整个数组的基础上加一,即跳过。

一级指针与二级指针
int ch = 'a';
int *p = &ch;//*p 是一级指针,他存放的是 ch 的地址
int **p;//**p 是二级指针,他存放的是 p 的地址

如果有三级指针 ***p ,那么它里面存放的就是二级指针的地址,以次类推。