C函數(shù)調(diào)用


一,產(chǎn)生隨機數(shù)

#include<time.h> //使用下面函數(shù)所需要的頭文件

srand(time(0));//初始化隨機數(shù)發(fā)生器,不能放進循環(huán),只需執(zhí)行一次,也可以寫為srand(time NULL); num = rand()%100; //產(chǎn)生0~100的隨機數(shù)并賦值給num


二,函數(shù)返回值——終端中輸入echo $?查詢返回值

  • 有返回值的函數(shù)函數(shù)調(diào)用結(jié)束后會返回一個數(shù)值給主函數(shù)
  • 無返回值的函數(shù)函數(shù)結(jié)束后無返回值,一般定義為void類型,即空類型

三,函數(shù)定義

  • 函數(shù)定義
    DataType FunctionName() //沒有“;”,定義的函數(shù)之間是平行的,
  • 函數(shù)聲明
    DataType FunctionName(); //有“;”,若定義的函數(shù)放在被調(diào)用的前邊時可以省略,即定義的函數(shù)放在后面函數(shù)被調(diào)用前需聲明
  • 函數(shù)調(diào)用
    FuntionName(Value); //實參和形參類型順序要一致
#include<stdio.h>
void test1()               //定義一個空類型函數(shù),由于在函數(shù)調(diào)用之前,故可以省略聲明
{
    int i = 3;
    i +=5;
    printf("i = %d\n", i);
    scanf("%d", &i);
    printf("scanf = %d\n", i);
    return;                  //void類型函數(shù)沒有返回值
}
int test2()                //int類型函數(shù)
{
    int i = 0;
    int sum = 0;
    for(i = 0; i < 10;i++)
        sum +=i;
    printf("sum = %d\n", sum);
    return sum;              //sum也可以為其他int型常量
}
int main()
{
    test1();
    int ret = test2();       //調(diào)用函數(shù)test2()及接受函數(shù)返回值sum
    printf("ret = %d\n", ret);
    return 0;   
}

四,auto,static,extern,register和const概念

第一個文件

#include<stdio.h>
extern int test_extern();  //外部函數(shù)聲明
auto int a = 0;     //動態(tài)全局變量,auto可以省略
int b = 1;          //動態(tài)全局變量需要定義在引用之前
static int c = 2;   //靜態(tài)全局變量需要定義在引用之前
static int d;       //靜態(tài)全局變量未賦值系統(tǒng)默認為0
void test1()
{
    int c = 3;
    printf("c = %d\n", c);
    return;
}
static void test2()  //表示該函數(shù)只引用于該文件,不能被其他文件調(diào)用
{
    printf("b = %d\n", b);
    return;
}
void test3()
{
    static int e = 4;   //靜態(tài)變量只初始化一次
    sum +=3;
    printf("sum = %d\n", sum);
    return;
}
int main()
{
    int a1 = 0;         //動態(tài)局部變量
    static int b1 = 1;  //靜態(tài)局部變量
    test1();
    test2();
    test3()            //第一次調(diào)用sum=7
    test3();           //第二次調(diào)用sum=10
    test3();           //第三次調(diào)用sum= 13,上面的結(jié)果證明靜態(tài)變量只初始化一次
    return 0;
}

第二個文件

#include<stdio.h>
extern int a;        //外部變量
int test_extern()
{
a += 10;
printf("a = %d\n", a);
return a;
}

編譯:gcc 第一個文件名 第二個文件名 -o 目標文件名

  • register:寄存器變量,直接將變量存放在寄存器中,優(yōu)點速度快。缺點cpu寄存器個數(shù)有限,不可定義多個寄存器變量
  • const:
    const int num = 5; int const num = 5; const int *p; int const *p; //值不可更改 int* const p; //址不可更改 const int* const p; //值和址都不可更改
  • 指針函數(shù): int *test(); //返回一個局部地址是不允許的,沒有意義
  • 函數(shù)指針: int (*pa)();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容