员理管帅最 发表于 2019-8-25 16:11:17

对数组指针与指针数组的理解对吗,求大神给点意见,谢谢

#include<stdio.h>

int main()
{
int i,j;
int a[]={
          {1,2,3,4,5},
          {6,7,8,9,0}
         };
int b={12,34,56,1,2,3,4,0,9,19};
int (*p1)=a;
int (*p2)=&b;
int *p3={*a,b};
printf("打印数组a的值为:");
printf("\n");
for(i=0;i<2;i++)
{
for(j=0;j<5;j++)
{
printf("%d ",*(*(&p3+i)+j));
}
printf("\n");
}
printf("打印数组b的值有:\n");
for(j=0;j<10;j++)
{
printf("%d",*(p3+j));
}

putchar('\n');

printf("打印数组a的值为:");
printf("\n");
for(i=0;i<2;i++)
{
for(j=0;j<5;j++)
{
printf("%d ",*(*(p1+i)+j));
}
printf("\n");
}
printf("打印数组b的值有:\n");
for(j=0;j<10;j++)
{
printf("%d",*(*p2+j));
}

putchar('\n');

return 0;
}

superbe 发表于 2019-8-27 16:30:28

int main()
{
int i,j;
int a[]={
          {1,2,3,4,5},
          {6,7,8,9,0}
         };
int b={12,34,56,1,2,3,4,0,9,19};
int (*p1)=a;
int (*p2)=&b;
int *p3={*a,b};
printf("打印数组a的值为:");
printf("\n");
for(i=0;i<2;i++)
{
for(j=0;j<5;j++)
{
printf("%d ",*(*(&p3+i)+j));    //这行改成printf("%d ",*(*(((int (*))p3)+i)+j));
                                                   //p3元素是int *类型的,强制转换成int (*)类型的,指向才正确。
}
printf("\n");
}
。。。。。。

其它没问题。不知道説得对不对,还是请高手们指点下吧。



superbe 发表于 2019-8-27 16:35:24

第二次打印b时加了个空格分隔,不然输出都连一起了。

员理管帅最 发表于 2019-8-28 21:37:20

superbe 发表于 2019-8-27 16:30
int main()
{
int i,j;


兄弟想法没错,但是我这程序已经有数组指针来输出了,而你改的是指针数组,重新强制转换为数组指针了
页: [1]
查看完整版本: 对数组指针与指针数组的理解对吗,求大神给点意见,谢谢