1. 程式人生 > 其它 >【C語言學習筆記】指標

【C語言學習筆記】指標

技術標籤:學習筆記c語言指標

今天看了學習指標的視訊,記錄一下。
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是一個指標變數,它指向一個指向整型資料的指標變數。