前言
正文
由于很容易搞混,因此这里做一下记录。
指针数组
指针数组是指具有若干个相同存储类型和数据类型的[指针变量]构成的组合。
指针数组的一般形式:
存储类型 数据类型 * 指针数组名 [大小]
//指针数组,类型是int * 所以叫int型指针数组
int * p[n];
// int型数组
int array[n]
[]的优先级比*高,所以p先是一个数组,在int * 组合说明是一个整型指针数组,含有n个指针类型的数组。
数组中存储的就是指针
指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身的大小决定,每一个元素都是一个指针,在32 位系统下任何类型的指针永远是占4 个字节。它是“储存指针的数组”的简称。
#include<stdio.h>
int main(){
int a[2][2]= {{1,2},{3, 4}};
for( int i=0; i< 2; i++){
for( int j=0; j< 2; j++){
printf("%d \n ", a[i][j]);
}
}
printf("\n");
int * q[2];
q[0] = a[0];
q[1] = a[1]; //不指定q[1]就没法查询到a[1]的内容
for( int i=0; i< 2; i++){
for( int j=0; j< 2; j++){
printf("%d \n ", q[i][j]);
}
}
return 0;
}
输出结果:
1
2
3
4
1
2
3
4
数组指针
行指针,也就数组指针。存储行地址的指针叫行指针变量。
一般的形式如下:
存储类型 数据类型 (* 行指针变量)[大小]
比如:
int (*p)[n];
()的优先级比[]高,说明p是一个指针,指向一个整型的一为数组,这个一维数组大小为n。
数组指针:首先它是一个指针,它指向一个数组。在32 位系统下任何类型的指针永远是占4 个字节,至于它指向的数组占多少字节,不知道,具体要看数组大小。它是“指向数组的指针”的简称。
个人觉得,数组指针,可以看成存在类型为int的二维数组
#include<stdio.h>
int main(){
int a[2][2]= {{1,2},{3, 4}};
for( int i=0; i< 2; i++){
for( int j=0; j< 2; j++){
printf("%d \n ", a[i][j]);
}
}
printf("\n");
int (*p)[2]; //类型为int的数组指针
p =a ;
for( int i=0; i< 2; i++){
for( int j=0; j< 2; j++){
printf("%d \n ", p[i][j]);
}
}
return 0;
}
输出的结果:
1
2
3
4
1
2
3
4
小结:
- 数组指针和指针数组赋值存在一定的区别。
指针数组:
int * q[2]; // 存储的类型为int *指针
q[0] = a[0];
q[1] = a[1]; //不指定q[1]就没法查询到a[1]的内容
数组指针:
int (*p)[2]; //类型为int的数组指针
p =a ;
- ()的优先级比[]高,[]比*高,所以导致存储的类型不一样。
PS 以上面例子
指针数组:存放的是int *
数组指针:存放的是int
谁的优先级高就读法就放在后面,比如指针数组中[]的优先级高于*;比如数组指针中的(int *)高于[]。
- 如果指针在最后,说明这个是指针,用于指向某个地址的;
- 如果数组在最后,说明这个是数组,用于存储指针的数组,数组类型为int *;
参考文章
- 《数组指针和指针数组的区别》
- 等
历史上的今天
随机推荐
蒋勋 : 孤独的乐趣
与孤独相处的时候,可以多一点思维的空间,生命的过程会不会更细腻一点?——蒋勋禅宗有一则有趣的故事,小徒弟整天跟老师父说:“我心不安,我心不安。”他觉得心好慌,上课没有心上课,做功课没有心做功课,问老师父到底该怎么办?师父拿出一把刀,说:“心拿出来,我帮你安一安。”心一直在自己身上,心会不安,是被...
陈独秀:人生的真义
人生在世,究竟为的甚么?究竟应该怎样?这两句话实在难得回答的很,我们若是不能回答这两句话,糊糊涂涂过了一生,岂不是太无意识吗?自古以来,说明这个道理的人也算不少,大概约有数种:第一是宗教家,像那佛教家说:世界本来是个幻象,人生本来无生;“真如”本性为“无明”所迷,才现出一切生灭幻象;一旦“无明”灭,...
开机动画文件制作以及注意事项
推荐使用 读书导航 极客导航 :125啦极客导航(http://www.biumall.com/jike.html)PS:红色字体需要特别注意刚刚将原生Android系统开机logo和开机动画做了调整,为此耗费了接近半天的时间,碰到了很多问题,幸好最终达成了目的。一,首先说一下bootanim...
三毛:说给自己听
如果有来生,要做一棵树,站成永恒,没有悲欢的姿势。一半在尘土里安详,一半在风里飞扬,一半洒落阴凉,一半沐浴阳光。非常沉默,非常骄傲。从不依靠,从不寻找。如果有来生,要化成一阵风,一瞬间也能成为永恒。没有善感的情怀,没有多情的眼睛。一半在雨里洒脱,一半在春光里旅行。...
判断Service和Activity的存在
备忘在这,防止下次需要。1、判断服务是否在运行 /** * app service running */ public static boolean appServiceIsRunning(String classname) { if (null == classname...
Thread中断简单介绍
前言简答记录一下Thread中断相关的内容。记录一下,方便自己查阅。正文Thread中断主要涉及如下几个方法:interrupt()isInterrupted()interrupted()下面单独介绍一下。interrupt()interrupt()使线程中断。...
(1)如果指针在最后,比如数组指针,说明这个是指针,用于指向某个地址的;(2)如果数组在后,说明这个是数组,用于存储指针的,也就是数组类型为int *