【C語言學習筆記】指標
阿新 • • 發佈:2020-12-24
今天看了學習指標的視訊,記錄一下。
int *p;
int a;
*p是取值,&a是取地址。
get新知識:
1)指向二維陣列的指標,如指向int a[3][4] 的指標int (*p)[4],p指的是第0行第一個地址(注意是地址),(p+1)指的是第1行第一個地址,以此類推;
*( *(p+i)+j)表示第i行第j列的元素。
二維陣列本質也是一維陣列。每一行相當於一個元素。
2)指向函式的指標:
作用:可以作為另一個函式的引數呼叫。
宣告:int (*p)();
例如:(函式的具體作用自己去實現)
int nax(int, int) ;
/*函式宣告溫*/
int min(int, int) ;
/*函式宣告*/
int add(int, int) ;
了
/*函式宣告 */
void process( int, int, int(*fun)() );
int a, b;
printf("Endter a and b: ");
scanf("%d %d", &a, &b);
printf("max = ");
process(a, b, max);
printf("min = ");
process(a, b, min);
printf("sum = " );
process(a, b, sum);
3)指標返回函式
#include <stdio.h>
double *search(double ( *pointer)[4], int n)
{
double *pt;
pt = *(pointer + n);
return pt;
}
int main()
{
double score[][4] ={ {60.0,70.0, 80.5,90.5}, {56.0, 89.0, 67.0, 88.0}, {94.2, 78.5,90.3,88.6},{98.7,99.0,89.5,88.6}};
double *search(double(*pointer) [4], int n) ;
double *p;
int i, m;
printf("Please enter the nunber of student: ");
scanf("%d",&m) ;
printf("'The scores of No.%d are: \n",m);
p = search(score, m) ;
for( i=0; i < 4; i++)
printf("%5.2f\t", *(p + i));
}
執行結果:(從0開始)
總結:
int i:定義整型變數i
int *p:p為指向整型資料的指標變數
int a[n]:定義整型陣列a,它有n個元素
int *p[n]:定義指標陣列p,它由n個指向整型資料的指標元素組成
int (*p)[n]:p為指向含n個元素的一維陣列的指標變數
int f():f為帶回整型函式值的函式
int *p():p為帶回一個指標的函式,該指標指向整型資料
int (*p)():p為指向函式的指標,該函式返回一個整型值p是一個指標變數,它指向一個指向整型資料的指標變數。