指针数组&数组指针

2维数组:
1)定义形如int a[2][3],此时a代表的是这个2维数组的地址,sizeof(a)为24。
2级指针:
1)定义形如int **p:表示为指向指针的指针
2)2级指针不能和2维数组替换,如int aa[2][3],**a;a=aa;是毛病的,但可以用int (*a)[3];a=aa替换。
指针数组:
1)定义形如int *p[5]:表示含有5个指针元素的数组、又称为2维指针,可以和p[5][n]在1定情况下通用,sizeof(p)为20。
2)每一个元素均是指针。如p[0]、p[1]均是指针。
如 char *p[5]={
“saf”,
“rfsdfds”,
“gjnaf”,
“asdfds”,
“wef”
};
p[0]~p[4]均表示字符串的地址

3)p相当于数组名是1个常量不可以更改,类似p++、p+=1均是毛病的,所以p不能作为左值。
4)指针数组和2级指针之间的替换
char *p[5]={“saf”,”rfsdfds”,”gjnaf”, “asdfds”,”wef”};
char **q;
q=p;//此时相当于将p隐式转换了。还可以理解为p本身就是1个1维数组(1维数组的地址),只是多1个,那末就能够用多1个的1级指针来替换。

5)指针数组作为参数
函数声明为void fun(char *p[]),调用fun(p).

数组指针:
1)定义形如int (*a)[3].a为指向数组的指针,sizeof(a)为4。
2)数值指针可以和多维数组替换,但是多级指针不可以和多维指针替换。

int (*a)[3],**aa,aaa[2][3];
a=aaa;//正确
aa=a;//毛病
aa=aaa;//毛病
由于a和aaa都表示1个数组指针,而aa仅仅表示1个指针的指针。
3)作为形参
void fun(int (*a)[3])//2维下标必须要明确指出,后面编译器计算a[i][1]的地址就相当于计算a+i*3+1.
{
int i;
for(i=0;i<2;i++)
printf(“%d”,a[i][1]);
}
int main()
{
int a[2][3]={1,2,3,4,5,6};
fun(a);
}

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » 指针数组&数组指针

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡