C語言基礎 -42 函數_如何定義一個函數

book@100ask:~/C_coding/CH02$ cat main.c
#include <stdio.h>
#include <stdlib.h>

int main()
{
	printf("Hello!\n");
	return 0;
}
book@100ask:~/C_coding/CH02$ make main
cc     main.c   -o main
book@100ask:~/C_coding/CH02$ ./main
Hello!
book@100ask:~/C_coding/CH02$ echo $?
0

返回值是給函數的父進程看的. 當前程序在shell下執行,其父進程就是shell

如果不定義返回值,則該值是最後一條語句有效執行的字符數

book@100ask:~/C_coding/CH02$ cat main.c
#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
	printf("argc = %d\n",argc);
//	return 0;
}
book@100ask:~/C_coding/CH02$ make main
cc     main.c   -o main
book@100ask:~/C_coding/CH02$ ./main
argc = 1
book@100ask:~/C_coding/CH02$ ./main abc 123 hello
argc = 4
book@100ask:~/C_coding/CH02$ ls /etc/a*.conf
/etc/adduser.conf  /etc/apg.conf  /etc/appstream.conf
book@100ask:~/C_coding/CH02$ ./main /etc/a*.conf
argc = 4

argc是計數器,用於記錄從終端上到底傳了多少個參數過來

argv是列表,用於保存傳遞過來的參數,元素的個數取決於argc的數值;

book@100ask:~/C_coding/CH02$ cat main.c
#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
	int i;
	printf("argc = %d\n",argc);
	for(i = 0 ; i < argc; i++)
		puts(argv[i]);
	return 0;
}
book@100ask:~/C_coding/CH02$ make main
cc     main.c   -o main
book@100ask:~/C_coding/CH02$ ./main
argc = 1
./main
book@100ask:~/C_coding/CH02$ ./main 123 abc
argc = 3
./main
123
abc
book@100ask:~/C_coding/CH02$ ./main 123 abc /etc/a*.conf
argc = 6
./main
123
abc
/etc/adduser.conf
/etc/apg.conf
/etc/appstream.conf

 

argv是一個數組,每個元素都是一個char*,最後一個元素爲空指針NULL

book@100ask:~/C_coding/CH02$ cat main.c
#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
	int i;
	printf("argc = %d\n",argc);
	for(i = 0 ; argv[i] != NULL; i++)
		puts(argv[i]);
	return 0;
}
book@100ask:~/C_coding/CH02$ make main
cc     main.c   -o main
book@100ask:~/C_coding/CH02$ ./main
argc = 1
./main

當被調函數在主調函數之後時,需要在主調函數前面加被調函數的聲明。

注意,被調函數的類型,與聲明的函數類型保持一致,否則編譯會報警(編譯器會認爲聲明的函數與被聲明的函數不是一個函數)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章