C语言高级编程:数组和指针作为函数形参
生活随笔
收集整理的這篇文章主要介紹了
C语言高级编程:数组和指针作为函数形参
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
測試環(huán)境:
win10 x86-64
gcc: x86_64-pc-cygwin
?
1. 說明
1)作為函數(shù)形參時(也只有這種情況),數(shù)組與指針等同,int *p = int a[],p和a在函數(shù)內(nèi)部都是指針
2)數(shù)組作為函數(shù)形參時將被轉(zhuǎn)化為指向數(shù)組第一個元素的指針,無論是int a[10]還是int a[]形式的形參,在函數(shù)內(nèi)部都是int *a形式指針
3)沒有辦法直接將數(shù)組本身傳遞給函數(shù)(可以間接傳遞,如將數(shù)組封裝再結(jié)構(gòu)體內(nèi)~~~)
3)由于規(guī)則2),下列用法均正確,it's amazing!
????fun(&i);
????fun(p);
????fun(a);
?
2. 代碼:
#include <stdio.h> #include <stdlib.h>void fun(int a[10]) {printf("fun: a[0] = %d\n", *a); }void fun2(int a[]) {printf("fun2: a[0] = %d\n", *a); }void fun3(int *a) {printf("fun2: a[0] = %d\n", *a); }int main() {int i = 1;int *p = NULL;int a[10] = {5};p = &i;fun(&i);fun(p);fun(a);fun2(&i);fun2(p);fun2(a);fun3(&i);fun3(p);fun3(a);return 0; }?
3. 編譯
無warning無error
?
?
4. 運(yùn)行
D:\baoli\Desktopλ .\a.exefun: a[0] = 1fun: a[0] = 1fun: a[0] = 5fun2: a[0] = 1fun2: a[0] = 1fun2: a[0] = 5fun2: a[0] = 1fun2: a[0] = 1fun2: a[0] = 5?
?
總結(jié)
以上是生活随笔為你收集整理的C语言高级编程:数组和指针作为函数形参的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第1章 整合jenkins和阿里云cod
- 下一篇: 算法-无向图(连通分量,是否有环和二分图