C言語入門(9)--関数とポインタおよび構造体の紹介

1710 ワード

1、関数名または関数を指すポインタ変数1.1、関数を指すポインタ変数の定義:
C言語における関数名は、その関数のエントリアドレスを表す.
区分:関数を指すポインタと戻り値はポインタです.
タイプ関数:
double(*fp)(int ,int *);
double abc(int,int*);
fp = abc;//ポインタポインタポインタ関数
説明:fpは関数を指すポインタ変数で、この関数はdoubleタイプでなければなりません.
同じタイプのポインタだけがこの関数を指すことができます.
double *fp(int,int*);
説明:fpはポインタ変数ではなく、fpがdoubleの基本タイプのポインタタイプである関数であることを示します.
2、関数名または関数を指すポインタ変数を実パラメータとする
関数名またはsが関数を指すポインタ変数は、実パラメータとして関数に渡すことができ、この場合、対応するパラメータはタイプが同じであるべきである
ポインタ変数;
3、ローカル変数、グローバル変数とストレージ分類
ローカル変数(内部変数):関数の内部または文の内部で定義された変数.関数のパラメータも局所変数に属します.
グローバル変数(外部変数):関数の外部で定義された変数.
4、局部変数とグローバル変数の違いは彼らの作用域の違いにある.
5、ストレージカテゴリ:
C言語には、2つのストレージカテゴリがあります.1つは自動クラス、1つは静的クラスです.局所変数は
自動クラス、静的クラスとも言えます.グローバル変数は静的クラスのみです.
オートオートオートオート
regisertレジスタ
static静的(この変数は永久的な記憶ユニットを占めている)であり、記憶機能を有する.
extem外部
6.構造体、共通体、ユーザー定義タイプ
7、構造体は一度に複数の変数を定義できる:ケース
  struct structName
  {
    
int year,month,day;
  };
structはキーワードで、構造体タイプのフラグです
注意:構造体の説明は同じようにセミコロンで終わります.
構造体に構造体式が含まれている場合、構造体ネストと呼ぶ.
struct student
{
char name[12];
char sex;
struct date birthday;
float sc[4];
};
struct dateは説明した構造体タイプでbirthdayは
この構造体のメンバー.
構造体変数に値を付与するには、Cコンパイラは各メンバーが構造体重の順序で1つ1つに対応して値を付与し、スキップは許されない
前のメンバーは後のメンバーに値を割り当てます.ただし、前のメンバーにのみ値を割り当てることができます.
割り当てられていないメンバーは、数値型と文字型のデータに自動的に0を割り当てます.
#include<stdio.h>
#include<math.h>

double tran(double(*)(double),double(*)(double),double);

int f(int a)
{
	if(a==1 || a==0)
	{
		return 1;
	}else
	{
		return a*f(a-1);
	}
}

main()
{
	int i,j;
	scanf("%d",i);
	j = f(i);
	printf("%d",j);
}