亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

清晰弄懂 函數 指針 與數組之間的關系

發布時間:2020-07-01 07:40:42 來源:網絡 閱讀:415 作者:夢醒的鴨子 欄目:編程語言

指針函數:(返回指針值的函數)

當一個函數聲明其返回值為一個指針時,實際上就是返回一個地址給調用函數,以用

于需要指針或地址的表達式中。

簡單的說:

函數可以返回 整型 字符行 也可以返回指針型的數據(也就是地址)

格式:類型說明符 * 函數名(參數)

int *fun(int a,int b)

例:

node *creatnode(int data)

{

   node *temp=malloc(sizeof(node));

   temp->data=data;

   temp->left=NULL;

   temp->right=NULL;

   return temp;

}

函數指針:(指向函數的指針)

指向函數的指針  包含了函數的首地址,可以通過指針變量來調用函數。

簡單的說:

定義一個指向函數的指針變量,用來存放某一函數的首地址,此指針變量指向該函數

調用一個函數,可通過函數名直接調用,也可以通過指向函數的指針變量來調用該函數

聲明格式如下:

類型說明符 (*函數名)(參數)    其實這里不能稱為函數名,應該叫做指針的變量名。

int (*fun)(int a,int b)

例:

int mymax(int a,int b)

{

if(a>b)

return a;

else

return b;

}

int main()

{

int x,y;

int max;

int (*p)(int,int);//函數指針 ==> 指向函數的指針變量

p = mymax;//mymax 為函數的首地址,p 指向 mymax

scanf("%d %d",&x,&y);

max = (*p)(x,y);//(*p) ==> mymax 通過p 指針來操作mymax()

printf("max = %d\n",max);

return 0;

}

函數指針的三種形式:

1.聲明一個函數類型

typedef void(Myfun)(int a,int b);

//將函數類型命名為Myfun返回值為void

使用:

Myfun* mfp = NULL;//定義函數指針變量

2.聲明一個函數指針類型

typedef void(*Myfun1)(int a,int b);

//聲明了一個Myfun的函數指針 數據類型

使用:

Myfun mfp = NULL;//mfp 指向NULL

3.定義一個函數指針 變量

void (*Myfun2)(int a,int b);

使用:

Myfun2 = NULL;//Myfun2 指向NULL 直接對變量初始化

指針函數與函數指針的區別

指針函數是一個函數,返回值是指針(不能返回局部非靜態變量的地址或局部指針非靜態變量,函數一旦執行完就釋放了)

函數指針是一個指針。指向一個函數

數組

數組的基本用法

int a[10];//a代表數組首元素的地址,&a代表整個數組的地址

    //步長:a+1 = 4  &a+1 = 40

自定義數組類型

typedef int (typeArray)[10];

typeArray array;//用自定義類型定義數組變量

array[0] = 10;//給數組元素賦值

printf("array[0] = %d\n",array[0]);//打印數組元素的值

數組還原成指針

a[i] = *(a+i)

a[i][j] = *(*(a+i)+j)

指針數組

一個數組,其中的若干個元素均為指針類型的數據

int * array[4];

例:

char *Myarray[] = {"1111", "33333", "aaaa"}; //指針 數組

數組指針

這個指針指向數組的首地址

int (*array)[4];

例:

int (*array)[4];//定義一個指向數組的指針 array

int a[4];

     array = &a;

指針數組與數組指針的區別:

數組指針是指向數組首元素的地址的指針,其本質為指針

(這個指針存放的是數組首地址的地址,相當于2級指針,這個指針不可移動); 

指針數組數組元素指針的數組,其本質為數組

舉例

數組指針:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>

int main()
{

char c[][3] = {"哥", "哥", "我", "岸", "上", "走"};
char (*p)[3];
int i; p=c; //將指針定位于c[0]
for(i=0;i<=5;i++)
{
printf("%s, ", *(p+i)); //或者將*(p+i)替換成*p++
}
printf("\n");
for(i=5;i>=0;i--)
{
printf("%s,",*(p+i)); //或者將*(p+i)替換成*p--
}
return 0;
}

指針數組:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<stdio.h>

int main()
{

int i;
char *pch[6] = {"妹","妹","你","坐","船","頭"};
for(i=0;i<6;i++){
printf("%s, ",pch[i]);
}
printf("\n");
for(i=5; i>=0; i--){
printf("%s\n",pch[i]);
}
return 0;
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沈阳市| 赣榆县| 琼结县| 若尔盖县| 山阴县| 上饶县| 寿宁县| 张家界市| 左权县| 科技| 佛坪县| 玉屏| 河东区| 根河市| 阜南县| 龙岩市| 神农架林区| 原阳县| 清流县| 磴口县| 武宣县| 莱芜市| 北辰区| 吉首市| 苏尼特左旗| 外汇| 绥宁县| 博客| 日照市| 时尚| 嵊州市| 枣阳市| 灵台县| 绥滨县| 长汀县| 滕州市| 永仁县| 白水县| 西宁市| 渭源县| 兴文县|