C++學習筆記

C++指標與陣列

指標是用來指向記憶體位址的,可用*設指標變數跟取指向位址的值。&就是取變數記憶體位址。記著上述便可先初步理解指標作用與作法。

陣列位址

指標n跟陣列名稱v皆會指向陣列v的開頭位址,因此將指標指向陣列的開頭位址後,便可用*(n+i)、n[i]等跟矩陣v一樣的方式對陣列取值或設值(i為索引值)。

一維陣列

取值:*(v+i)=v[i]

陣列v圖示:

用法如下:

    int v[3]; // 設定陣列
    int *n=v; //設指標n指向陣列v的開頭v[0]位址
    // [] 為下標運算子
    n[2]=2; // 指標n指向的位址v[2]變數值設2
    printf("n[2]=%d\n", n[2]); // n[2]=2
    //可用a[b]=*(a+b)方式取用list
    *(n+1)=1; // *(n+1)會取出&v[1]位址,再用*取值
    *(v+0)=0; // 強制讓v轉形成&v[0]位址,再用*取值
    printf("v[0]=%d\n",v[0]); // v[0]=0
    printf("n[1]=%d\n", n[1]); // n[1]=1
    printf("v[1]=%d\n", v[1]); // v[1]=1

指標n指向陣列v的開頭位址,可直接用*取出n指向位址的值,n++會移動指標n指向的位址,用法如下:

    int v[5]={1,2,3,4,5}; // list
    int *n; // 宣告一個指標
    // 將指標指向list的開頭位址,n++會往下移動指標所指的位址
    for(n=v; n!=&v[5]; n++){ 
        printf("%d\n", *n); // 印出指標所指向的位址儲存的值
    }

二維陣列

指標指向位址:*(arr+i)+j

取值:*(*(arr+i)+j)=a[i][j]

二維陣列乘法(矩陣乘法)

程式碼:

    for (int i = 0; i < row; i++){
        for (int k = 0; k < col; k++){ // 先建立C矩陣
            C[i][k] = 0;
            for (int j = 0; j < mid; j++){ // A矩陣的直行、B矩陣的橫列
                C[i][k] = C[i][k] + A[i][j] * B[j][k];
            }
            printf("%d,    ", C[i][k]);
        }
        printf("\n");
    }

三維陣列

發表留言