1. 程式人生 > >函式&變數_宣告、定義、呼叫\引用

函式&變數_宣告、定義、呼叫\引用

引例——在高中數學裡,我們有y=f(x);f(x)=3x;

在C語言裡我們有:

#include<stdio.h>
int f(int a)
{
	return 3 * a;
}
int main()
{
	int y;
	int x = 3;
	y = f(x);
	printf("%d", y);
}

下面說一下函式的 宣告、定義、呼叫

宣告:”我先告訴系統有這個東西,可以用“

【詳見下面】宣告的作用是把函式名、函式引數的個數、函式引數型別等資訊通知編譯系統,以便在遇到函式呼叫時,編譯系統能正確識別函式並檢查呼叫是否合法

1.引用性宣告:(將外部已有的東西的作用域擴充套件到宣告處、新宣告東西)
2.定義性宣告:(宣告的同時進行定義)

定義:“之前宣告過的東西具體是什麼”

用(引用/呼叫):“變數要正確寫在表示式裡,函式用的時候別忘了加“()”,並且在裡面填寫相應的引數”

=============分割線===============

括號內數字對應書上章節

變數_宣告(7.10)、定義(7.10)、引用(3.3.2)

見書中P214 變數的宣告和定義

#include <stdio.h>
void main()
{
	//extern A; //引用性宣告【不需建立儲存空間】(簡稱宣告)此處需要有別的檔案中定義了A變數故註釋掉了
	int a;//定義性宣告【需建立儲存空間】(簡稱定義)
	//變數的引用先略……
}

函式_宣告(7.4)、定義(7.2)、呼叫(7.3)

#include <stdio.h>
//宣告【如果定義在呼叫之前,則不用宣告】
void test();//宣告(“引用”)要加分號
int add(int);//宣告只需要函式引數的型別以便於檢查、而呼叫恰恰相反只需要變數名

void main()
{
	int a;

	test();//函式呼叫
	a=add(1);
	printf("a=%d\nadd(1)=%d",a,add(1));
}

void/*型別名*/ test/*函式名*/(/*可能會有形參表列*/)/*函式運算子*/   //函式的定義
{
	void print(char*);//宣告【如果定義在呼叫之前,則不用宣告】
	//函式內有宣告部分,執行語句部分
	print("test函式被呼叫");//函式呼叫
}

void print(char* a)
{
	printf("%s\n\n", a);//形參實參傳遞過程見另一文章
}

int add(int b)
{
	return b + 1;//返回值可以理解成“一個操作的結果”並可以去賦值給別的變數
}



就用add(int)這個函式來說

定義:型別名與return的數的型別一致)函式名 (形參表列:(形參的型別、形參的名字(在函式裡處理用的)))
int add(int b)  
{  
    return b + 1;  //返回值與函式引數一致
}  


*宣告:函式型別函式名函式引數型別(函式引數的個數【就是有幾個函式引數型別】)

int add(int);


呼叫:函式名函式引數來源變數的名稱。形參實參“虛實結合”後,得到返回值或處理完一些東西。
a=add(1);  //將返回值傳給a


宣告的作用是把函式名、函式引數的個數、函式引數型別等資訊通知編譯系統,以便在遇到函式呼叫時,編譯系統能正確識別函式並檢查呼叫是否合法

第180頁的這句話讓我瞬間明白函式的宣告和定義的區別

第181頁,函式的宣告和函式的定義第一行基本上是相同的,只差一個分號。……函式的首行(函式首部)稱為函式原型。

定義的首行,再加一個分號,就成了函式的“宣告”

相關推薦

函式&變數_宣告定義呼叫\引

引例——在高中數學裡,我們有y=f(x);f(x)=3x; 在C語言裡我們有: #include<stdio.h> int f(int a) { return 3 * a; } int main() { int y; int x = 3; y = f(

《IOS_C語言》函式分類函式宣告定義函式呼叫形參實參函式巢狀呼叫

#import "Operator.h" //函式定義 //定義求和函式(返回和,並且返回值在主函式裡面有用,如果有函式宣告則可以防於後面) int sum(int a){     int sum=0;     sum+=a;     return sum; } //定義取最大值,並且最大值在主函式中有用,

函式宣告定義呼叫

1 函式的宣告與定義 1.1 宣告的概念     宣告:一般位於標頭檔案,告知編譯器這裡有一個叫xxx(函式名)的函式,作用是讓編譯器知道這個函式的存在。總而言之宣告的功能就是告訴編譯器有這麼個函式,但並不實現。 1.2 定義的概念     定義

Python函式是什麼?如何定義呼叫函式

函式function是python程式設計核心內容之一,也是比較重要的一塊。在本文中主要介紹下函式的概念和基礎函式相關知識點。函式是什麼?有什麼作用、定義函式的方法及如何呼叫函式。 函式function是什麼?函式的作用 函式是可以實現一些特定功能的小方法或是小程式。在Python中有很多內

Go入門自學寶典004-變數宣告定義常量(const )列舉(iota)

004-變數 變數是幾乎所有程式語言中最基本的組成元素,變數是程式執行期間可以改變的量。 從根本上說,變數相當於是對一塊資料儲存空間的命名,程式可以通過定義一個變數來申請一塊資料儲存空間,之後可以通過引用變數名來使用這塊儲存空間。 004.1 變數宣告 Go語言

C語言之變數常量(define\const)變數宣告定義

記憶體地址 #include<stdio.h> #include<stdlib.h> #include<Windows.h> void main(){ int num = 10; int num1 = 20; int num2

C++建構函式—建構函式宣告定義帶引數的建構函式

建構函式是一種隨著物件建立而自動被呼叫的函式,它的主要用途是為物件作初始化。那麼,建構函式到底是什麼樣子的呢?建構函式的宣告與定義 在C++中,規定與類同名的成員函式就是建構函式。需要注意的是,建構函式應該是一個公有的成員函式,並且建構函式沒有返回值型別。以下是我們為連結串

十一☆※1函式初識定義return作用帶引數的函式函式巢狀呼叫

一、定義、呼叫函式(使用關鍵詞def) 1、def後面跟著是函式名字(自己定義),再後面是括號(),()裡面是函式的引數,沒有引數就空著 2、定義函式後,函式並不會自動的執行,程式從上往下執行,到這時候,會在記憶體中開闢一個空間。 3、如何呼叫函式?函式名+()進行

變數修飾符的定義宣告和初始化

1、類物件(變數)的宣告、定義與初始化 修飾符有以下幾種,const, extern, (explicit),( mutable) , static, volatile,(virtual),(inline)其中帶括號的為自定義類型別定義過程中特有的修飾符 主要將其分為多檔案

Effective C++筆記之一:宣告定義初始化與賦值

一.宣告(Declaration)        區分宣告和定義可以讓C++支援分開編譯,宣告常常見於標頭檔案中。原始檔包含標頭檔案之後,就可以使用這個變數,即使沒有看到該變數的定義。 宣告的語法如下: extern int i; // object decl

JavaScript變數宣告和輸出運算子

  一、JavaScript變數 1、變數,就是計算機中儲存資料的容器 通過 var 關鍵字宣告變數,就會在記憶體中開闢一塊空間,來存資料 var n=500; //將500給到n alert(n); //通過變數名來找到儲存的資料 關鍵字:程式語言定義好的,有特殊意義的單詞

【C/C++開發】C++之enum列舉量宣告定義使用與列舉類詳解與列舉類前置型別宣告

前面講到可以通過強制轉換將其他型別值賦給列舉變數:Weekday = enumType(2);這是合法的;但是Weekday = enumType(20);是非法的。這裡涉及列舉取值範圍的概念:列舉的上限是 大於最大列舉量的 最小的2的冪,減去1; 列舉的下限有兩種情況:一、列舉量的最小值不小於0,則列

宣告定義初始化賦值

變數的定義形式: 首先是型別說明符,隨後緊跟由一個或者多個變數名組成的類別,其中變數名以逗號隔開,最後以分號結束。 例子:int sum,value,unsold; struct GraphNode{     int label;     vect

C++中的宣告定義賦值和初始化

定義:生成資料型別的一個例項。定義某型別的變數或物件時,系統會為該變數或物件分配記憶體。 賦值:讓已經定義好的變數或物件具有某個數值。 初始化:在定義的同時進行賦值。初始化有兩種形式:=和(),前者叫做複製初始化,複製初始化呼叫建構函式建立一個臨時物件,然後將該臨時物件作為

宣告定義賦值的區別

如果是指變數的宣告和定義:從編譯原理上來說,宣告是僅僅告訴編譯器,有個某型別的變數會被使用,但是編譯器並不會為它分配任何記憶體。 而定義就是分配了記憶體。 對於下面的兩句程式碼: void Func() { int a; int b=1; a=0; }對於第一行程式碼,編

[程式設計規範]二宣告定義初始化

1.禁止使用memcpy memset 初始化非POD物件 POD(Plain Old Data)主要包括 int,char,float,double,enum,void,指標等原始型別和其集合。 非POD型別,可能含有虛擬函式,導致記憶體佈局不確定,使用memset可能會

C++之enum列舉量宣告定義使用與列舉類詳解

前面講到可以通過強制轉換將其他型別值賦給列舉變數:Weekday = enumType(2);這是合法的;但是Weekday = enumType(20);是非法的。這裡涉及列舉取值範圍的概念:列舉的上限是 大於最大列舉量的 最小的2的冪,減去1; 列舉的下限有兩種情況:一、列舉量的最小值不小於0,則列

變量的聲明定義初始化(轉)

局部變量 聲明和定義 包含 int 外部變量 存儲 變量聲明 bsp 運行 先分享一下關於變量聲明和定義的區別: 變量的聲明有兩種情況: (1) 一種是需要建立存儲空間的(定義、聲明)。例如:int a在聲明的時候就已經建立了存儲空間。 (2) 另一種是不需要

一維陣列基礎筆記(宣告定義呼叫

前言:自己對於一維陣列的宣告、定義、呼叫、賦初始值……一直弄不清楚格式,這一篇來專門整理一下,當作筆記 1. 陣列定義 1.1 定義一個5個元素的整型陣列 int array[5]; (1) int 表示定義的定義的陣列是整型陣列,即陣列空間裡面存放整形變數 (2)

C中變數宣告定義

在C中,變數的定義主要可分為兩種狀況:在函式內和在函式外。 但變數在函式內定義時,其屬性只能分為static和無static,而該變數便無法被外部函式所引用。而定義為static時表示該變數只能用來初始化一次。 而變數在函式外定義時,其屬性也只能分為static和exter