學習指標(1)
阿新 • • 發佈:2020-12-14
學習目標:一週掌握 掌握指標基本知識
學習內容:實驗課兩個簡單的題
1、輸入n(不大於20)個整形數存入一維陣列,用指標變數處理陣列元素的方式將其排序後倒序輸出。n從鍵盤輸入。
2、求矩陣a[2][3]={11,22,33,44,55,66}的轉置矩陣t[3][2],並按矩陣的形式輸出兩矩陣,要求用指標實現。
#include<stdio.h>
#include<iostream>
using namespace std;
void f(int * p, int len)//定義一個int * 型別的地址變數p,p指向a;
{
int i, k, m;
for (i = 0; i < len; i ++)//進行一個很簡單的排序;
{
for (k = i + 1; k < len; k ++)
{
if(p[i] < p[k])
swap(p[i], p[k]);
}
}
for (m = 0; m < len; m ++)
printf("%d ", p[m]);
}
int main ()
{
int n, a[25];
cin >> n;
for (int i = 0; i < n; i ++)
cin >> a[i];
f(a, n);
return 0;
}
#include<stdio.h>
void fun(int *a, int *b, int NX, int NY)
{
int i;
for (i=0; i<NX*NY; i++) b[i]=a[i];//二維陣列的地址是連續的
}
int main()
{
int a[2][3]= {11,22,33,44,55,66};
int b[3][2];
int i,j;
fun(&a[0][0], &b[0][0], 2, 3);
for (j=0; j<3; j++)
{
for (i=0; i<2; i++)printf("%d ",b[j][i]);
printf("\n");
}
return 0;
}
總結:a[i] 的首地址可以寫成 a,但二維陣列a[i][k]的首地址要寫成a[0][0]。
陣列的地址是連續的,一維的,對於多維陣列也是如此,如陣列a[1][1]的地址依次為a[0][0],a[0][1],a[1][0],a[1][1]。