900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > HQS-Part4.指针 一维数组 二级指针 二维数组 指针数组 数组指针。

HQS-Part4.指针 一维数组 二级指针 二维数组 指针数组 数组指针。

时间:2024-07-16 17:15:02

相关推荐

HQS-Part4.指针 一维数组 二级指针 二维数组 指针数组 数组指针。

一、指针

1. 指针也就是内存地址,指针变量就是存放地址的变量。

2. 定义指针变量。

格式:指针类型 + 变量名;

指针类型:目标数据类型+ “* ”,“ *"是说明符,表示指针类型;

3. & 为取地址符,功能:获取变量的地址,其结果为:原本类型 + *;

例如:int a=10;变量a的类型为int;&a 的类型为int *;

4.* 为间接引用符,功能:获取地址中目标数据值;其结果为:原本类型(指针类型)- *;

例如:int a=10;int*p=&a;*p的类型为int 型;a的值用p表示为:*p;

二、一维数组。

定义=类型+名字

1.定义:short a[8]; 变量a的类型为:short [8];数组名a;

①通常情况下,数组名表示该数组的首元素的地址:&a[0]=a;

定义指针类型为 :a

short *p_a=a;//p_a的偏移量是short;

short *pa_a=&a[0];

②特殊的两种情况,代表整个数组;

1)sizeof(a)----->2*8=16个字节;
2)&a —>类型为:short () [8];&a的偏移量:short [8];&8+1—>移动short [8](2x8个字节);

定义:short (*p)[8]=&a;

3.通过数组名a 获取数组中元素的值:

short a[8];short *p=a;//p的类型:short *;获取数组中元素可以使用:数组名[下标];a+0 类型为:short **(a+0) 类型为:short*(a+i) 等价于a[i];故:*()<===>[]p=&a[0];p+0类型为short *;*(p+0)类型为short ,取得第一个数组第一个元素的值p[0];*(p+i)=p[i];

三、一级指针与字符串 、多级指针

1.内存中有:常量区(只读)、栈区(可读可写)。

char buf[5]={'a','b'};//数组存储在栈区,共使用5个字节;char *p=NULL;p="HELLO";//"HELLO"是字符串常量,操作系统会在常量区分配6个字节//p中保存的是字符串常量的地址p[0]='H';//不能在给p[0]赋值;

2.二级指针:保存一级指针的地址;

int a=20;int *p=&a;//p为一级指针int **pp=&p;//pp为二级指针a 的值为:*p =**p;

四、指针数组、数组指针

1.指针数组:本质为数组,所有元素为指针(地址);

定义:数组内元素类型 数组名[元素个数];short *a[10];short *b[]={&d,&c};short **q=NULL;q=a;用法:等同于数组数组名[下标],数组中元素,为指针类型;*数组名[下标],地址所对应的数值;数组名:aa=&a[0]a[0]的类型为:short *&a[0]的类型为:short **结论:指针数组名用二级指针保存。

2.数组指针:本质是指针,指向的是整个数组;

定义: int a[8];&a的类型为:int (*)[8];int (*p)[8]=&a;

五、二维数组与指针

short a[2][3]={1,2,3,4,5,6};//看成两个一维数组人为理解:a[0] 1 2 3a[1] 4 5 6但物理存储是线性的。数组名 a: 一个一维数组,一维数组里面又是一维数组把二维数组看成一个一维数组,元素分别是:a[0],a[1];则该数组的首元素的地址:为&a[0]等价与:a//行指针。& a[0]<===> a类型:short (*)[3]short (*)[3]偏移量:short [3] short [3]a,a+i 等同于 行指针:short (*p)[3]=a;数组名a[i]: 该数组的首元素的地址:&a[i][0]<====> a[i]类型:short *short *偏移量: shortshort a[i[等同于列指针 short *q =a[0];列指针获取元素:*(a[i]+j) <===>*(*(a+i)+j);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。