首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

【指针】【数组】【定义】【疑点】

2013-12-19 
【指针】【数组】【定义】【疑问】eg.[解决办法]int main(){int (*ip1)[4]int *ip2[4]int ary1[4]{0,1,2,3}//

【指针】【数组】【定义】【疑问】
eg.


[解决办法]


int main()
{
int (*ip1)[4];
int *ip2[4];

int ary1[4]={0,1,2,3};//将ary1[4]改成5就编译通不过了 ,因为只能指向4个元素的数组
ip1 = &ary1;

printf("%p,%p,%p\n",ip1,ary1,&ary1);
printf("%p,%p,%p,%p,0x%x\n",ip1[0],ip1[1],ip1[2],ip1[3],sizeof(ary1));//内存间隔  sizeof(ary1)
printf("%d,%d,%d,%d\n",(*ip1)[0],(*ip1)[1],(*ip1)[2],(*ip1)[3]);


int a=3,b=2,c=4,d=6;
ip2[0]=&a;
ip2[1]=&b;
ip2[2]=&c;
ip2[3]=&d;

printf("%d,%d,%d,%d\n",*(ip2[0]),*(ip2[1]),*(ip2[2]),*(ip2[3]));//ip2数组保存的是指针,所以可以这么整

return 0;
}

//通过简单的东西延伸出去,关键是理解,不清楚的东西就用printf出来
//这是编程者的最基本的调试办法,上班第一天,就有前辈这么教我

[解决办法]
int (*ip)[4];

int *ip[4];
对于这两个,主要看运算符的优先顺序,其实指针和数组差不多。都可以看成二维数组。
第一个,括号优先级高,所以*p先变成一个数组,后面在与[4]结合,变成n行4列数组


第二个,[]优先级高,先变成p[4]数组,然后与*结合,变成4行n列数组
对于中文叫法,我也老是混乱,晕

热点排行