1. 程式人生 > 其它 >c++模板學習08之類模板與繼承

c++模板學習08之類模板與繼承

技術標籤: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));

執行結果如下
在這裡插入圖片描述