c語言輸入輸出 指標函式 函式指標有獲

2021-06-20 22:10:01 字數 1799 閱讀 1925

這裡寫的都是今天的收穫,雖然很少,但我相信會積少成多的,而且記下了,自己以後來看的時候,會回想起來。

1.原來c語言的標準輸入輸出函式都是有返回值的。

輸入的原型是:int scanf( char const *format, ...); (參考自c和指標)

當輸入合法時,返回1, 否則返回0

下面是**測試

int main()

}

顯示的結果:

123abc456def789

output:1

output:0

output:0

output:1

output:0

output:0

output:1

輸出的原型是:int printf(char const *format, ...); 

函式返回值是實際列印或儲存的字元數。

**測試:

int main()

輸出結果:

abcdefghijk:11

press any key to continue

2.指標函式、函式指標

int *fun(int a, double b);//是指標函式,fun是乙個函式(這個函式接收兩個引數),

乙個返回指向int型別的指標的函式。

int (*fun)(int a, double b);//是函式指標,這裡的fun是乙個指標(位址),

fun這個指標指向的是乙個函式,乙個什麼樣的函式呢?

乙個帶有兩個引數的函式,函式的返回值型別是什麼呢,是int型別。

即還需要要想使用這個fun就另外再定義乙個函式,不!是定義乙個函式,

因為開頭一句並沒有宣告函式,只是宣告了乙個指標變數(這個變數比較特殊,只能指向函式)。

好吧,(這是說給自己聽的)也就是fun是乙個變數,

什麼型別?指標型別,這個指標幹神馬的,是用來指向乙個函式的。

指向哪個函式,指向的函式有什麼要求呢?函式要求是返回值是int ,

引數列表是(int, double)。

上面理解了,這個也可以理解了,int * (*fun)(int a, int b);//哈哈,外面加的*是修飾

的是所指向的函式型別,

這個fun是乙個指標,乙個指向指標函式的指標。

上面的函式要求就變化了,返回值是int *, 引數列表是(int , double).

3.既然int (*fun)(int a, double b);中是宣告乙個指標,

這是我剛開始看書的,自己寫的一些逗比操作。

int (*fun)(int a, double b)

是錯誤的。//這是在main函式之外寫。

vc++ 6.0中是這樣說的:error c2239: unexpected token '{' following declaration of 'fun'

//在main函式之內寫

vc++ 6.0中是這樣說的: error c2601: 'fun' : local function definitions are illegal

error c2063: 'fun' : not a function

既然是乙個變數,那麼宣告在main函式內,和main函式外區別就那就是宣告週期和作用域的區別了。。。

如果上面是乙個函式的話,就不可能宣告在main函式中,因為c語言不支援乙個函式中定義另一函式。

就寫這麼多吧,這裡的差不多都是寫給自己看的,各位看官如發現我理解上的錯誤,還望指出。

c語言輸入輸出函式

c語言輸入輸出函式有很多,標準i o函式中包含了如下幾個常用的函式 scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.int scanf const char format...

C語言輸入輸出函式

c語言輸入輸出函式有很多,標準i o函式中包含了如下幾個常用的函式 scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.int scanf const char format...

c語言輸入輸出函式

c語言輸入輸出函式有很多,標準i o函式中包含了如下幾個常用的函式 scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.int scanf const char format...