关于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 ,那么它里面存放的就是二级指针的地址,以次类推。