日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

指针-数组传参,指针传参

發布時間:2025/4/14 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 指针-数组传参,指针传参 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

數組傳參

一維數組

二維數組

指針傳參

一級指針

二級指針

一個特殊的二級指針


數組傳參

一維數組

我們把傳入一維數組時輸入的是數組名,數組名是一個指向首元素的指針

那么在函數接收時,只需要保證傳入地址的類型相同即可

#include<stdio.h>void test(int arr[]) {} //int arr[] 可以看成int *arr void test1(int arr[10]){} //傳入的是指向首元素的地址,和[]內的值無關 void test2(int* arr){} //一個int*類型的指針int main(void) {int arr[10] = { 0 };test(arr); //將arr看成指針,指向第一個元素,類型是int*test1(arr); test2(arr);return 0; }

二維數組

我們傳入二維數組時輸入的也是數組名,數組名是一個指向首元素的地址,但這里首元素看成一個一維數組

int arr[3][5] = { {1,2,3,4,5}, //首元素 arr表示的是該一維數組的地址{2,3,4,5,6}, //第二個元素{3,4,5,6,7} //第三個元素};

同樣將arr看成一個指針,是一個指向數組的指針,也就是數組指針,類型為int(*)[5]。

那么在函數接收時,只需要保證傳入地址的類型相同即可

#include<stdio.h>void test(int arr[3][5]) {} //int arr[][5] 可以看成int(*)[5] void test1(int arr[][5]) {} //傳入的是指向首元素(數組)的地址,和第一個[]內的值無關 void test2(int(*arr)[5]) {} //*arr=arr[0],*(arr+i)=arr[i] //*(arr[i]+j)=arr[i][j]//*(*(arr+i)+j)=arr[i][j] //關于[]的作用可以看之前數組指針那篇int main(void) {int arr[3][5] = { {1,2,3,4,5}, //首元素 arr表示的是該一維數組的地址{2,3,4,5,6}, //第二個元素{3,4,5,6,7} //第三個元素};test(arr); //將arr看成指針,指向第一個元素(數組),類型是int(*)[5]test1(arr); test2(arr);return 0; }

指針傳參

一級指針

一級指針傳入函數時是傳地址,也就是指針,接收時只要類型相同即可。

#include<stdio.h>void test(int* p) {} //二者都是int*類型的指針 void test1(int p[]) {}void test2(char* p) {} //二者都是char*類型的指針 void test3(char p[]) {}int main(void) {int a = 10;int* p = &a;test(p);test1(&a);char b = 'w';char* p1 = &b;test2(p1); test3(&b);return 0; }

二級指針

函數接收的時候是一個二級指針,參數類型是二級指針即可,只要是元素往上兩級的地址都行。

void test(int** p) {} //int**類型int a = 0;int* p = &a;int** p1 = &p;test(&p); //指針往下兩級是一個元素或空都行test(p1);

一個特殊的二級指針

之前在數組指針里有說到過,可以把數組指針看成一個特殊的二級指針,其二級和一級的值相同。

#include<stdio.h>void test(int** p) {} void test1(int(*p)[]){} //這里的10正常應該加上,這里為了演示二級指針特性沒有加int main(void) {int arr[10] = { 0 };int(*p)[10] = &arr;test(&arr);test(p);test1(&arr);test1(p);return 0; }

總結

以上是生活随笔為你收集整理的指针-数组传参,指针传参的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。