c++模板學習08之類模板與繼承
阿新 • • 發佈:2021-02-07
技術標籤:c++
一.為二維陣列中的元素賦值,上程式碼
在這裡插入程式碼片
.........................................
int a[3][5],i,j;
printf("請輸入15個數值:\n");
for(i=0;i<3;i++){
for(j=0;j<5;j++){
scanf("%d",a[i]+j);
}
}
printf("陣列中的排列為:\n");
for(i=0;i<3;i++){
for (j=0;j<5;j++){
printf("%5d",*(a[i]+j));
}
printf("\n");
}
return 0;
.........................................
int a[3][5],i,j,*p;
p=a[0];
printf("請輸入15個數值:\n");
for(i=0;i<3;i++){
for(j=0;j<5;j++){
scanf("%d",p++);
}
}
p=a[0];
for(i=0;i<3;i++){
for(j=0;j<5;j++){
printf("%5d",*p++);
}
printf("\n");
}
return 0;
(1)&a[0][0]既可以看作是陣列0行0列的首地址,同樣還可以看作是二維陣列的首地址。&a[m][n]就是第m行n列元素的地址。
(2)a[m]+n表示第m行第n個元素地址
(3)&a[0]是第0行的首地址,當然&a[n]就是第n行的首地址。
【例】將一個3行5列的二維陣列的第3行元素輸出
在這裡插入程式碼片
int a[3][5],i,j,(*p)[5];
p=&a[0];
printf("請輸入15個數值:\n");
for(i=0;i<3;i++){
for(j=0;j<5;j++){
scanf("%d",(*(p+i))+j);//*此處等價於a[i]+j,因為*(p+i)等價於a[i];
}
}
p=&a[2];
printf("第三行的元素為:\n");
for(j=0;j<5;j++)
printf("%5d",*((*p)+j));
printf("\n");
return 0;
(4)a+n表示第n行的首地址
(5)第n行第m列元素的表示方法有:
1.*(*(a+n)+m)
2.*(a[n]+m)
二、二維元素的地址和元素
在這裡插入程式碼片
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
printf("%d,%d\n",a,*a);
printf("%d,%d\n",a[0],*(a+0));
printf("%d,%d\n",&a[0],&a[0][0]);
printf("%d,%d\n",a[1],a+1);
printf("%d,%d\n",&a[1][0],*(a+1)+0);
printf("%d,%d\n",a[1][1],*(*(a+1)+1));
執行結果如下