C言語の全体的な枠組み

42064 ワード

C言語とは何ですか.
C言語は何ですか.プログラミングのシロとして、入門できる言語はたくさんあります.C言語です.c++、Java、pythonなどですが、ほとんどの人がC言語を選択させます.なぜですか.
C言語は1972年に誕生し、私の両親よりも年齢が高く、他のプログラミング言語と言える長兄であり、C言語の上にはB言語があるが、B言語の欠陥により、C言語は最も早く成熟したプログラミング言語になった.なぜC言語を推薦するのか、簡単で効率的ですね.C言語はpythonのような後発的なショーはないが,C言語は下位システムに偏っているため,実行効率では他の言語よりも速くどこへ行ったか分からない+1 s
C言語はプロセス向け、抽象化された汎用プログラム設計言語であり、下層開発に広く応用されている.C言語は低レベルメモリを簡単にコンパイル・処理できる.C言語は、少量のマシン言語のみを生成し、実行環境のサポートを必要とせずに実行できる効率的なプログラム設計言語である.現在の段階では、プログラミング分野では、C言語の運用が非常に多く、高級言語とアセンブリ言語の利点を兼ね備えており、他のプログラミング言語に比べて大きな優位性を持っている.
以上のように、C言語はプログラミングの入門としてお勧めの言語であり、C言語に精通して他の言語を学ぶのも手応えがあるが、プログラミングの入門といえば、プログラマー学会の最初の言葉「hello world!」に言及せざるを得ない.
有名なハローワールド!
#include 
int main() 
{ 
  	 printf("hello world
"
); return 0; }

図コードに示すように、これは有名なhello worldで、初心者がプログラミングを学ぶときに出会った最初のコードで、最初は読めませんでしたか?大丈夫です.これからこのコードの実装の詳細について詳しく説明します.
データ型
char        //       
short       //    
int         //  
long        //    
long long   //      
float       //       
double      //       

これがC言語で使われているデータ型で、整数用intメモリ、小数用floatとdoubleメモリ、文字用charメモリなど、さまざまなデータを格納するために使われていますが、各データ型がコンピュータに占める空間の大きさも違います.これらの空間の大きさをどのように知っていますか.
#include  
int main() 
{    
	printf("%d
"
, sizeof(char)); printf("%d
"
, sizeof(short)); printf("%d
"
, sizeof(int)); printf("%d
"
, sizeof(long)); printf("%d
"
, sizeof(long long)); printf("%d
"
, sizeof(float)); printf("%d
"
, sizeof(double)); printf("%d
"
, sizeof(long double)); return 0; } char ch = 'w'; int weight = 120; int salary = 20000;

C言語では、非常に使いやすい関数が与えられています.sizeof()は、それぞれのデータが占める空間をよく知ることができます.具体的には、読者の皆さんが自分のプログラムに入れてみてください.
定数と変数
データ型を理解したら、どのように使うかを学ぶべきです.どのようにC言語の中で1つの具体的な物事を説明して、1人が年齢、体重、性別と名前などの情報を使うことを説明して、これらのものはC言語の中でも表すことができて、ここで変数と定数の概念を導入することができます
変数の定義方法
int age = 50; 
float weight = 60f; 
char name = 'john';

変数の分類
ローカル変数(関数で定義されている変数をローカル変数と呼びます)グローバル変数(main関数の前に定義されている変数をグローバル変数と呼びます)
#include 
int global = 2019;//     
int main() 
{   int local = 2018;//        
	//     global      ?    
	int global = 2020;//        
	printf("global = %d
"
, global); // 2020 return 0; }

まとめ:上の局所変数global変数の定義には問題はありません!ローカル変数とグローバル変数が同じ名前の場合、ローカル変数が優先されます.
定数
プログラムの実行に伴って変更できる量を変数と言いますが、プログラムの実行中に変わらない量を何と言いますか?定数.C言語における定数は、1.字面定数2.const修飾の定数3.#define定義の識別子定数4.列挙定数で定義できる.
#include
#define MAX 30  //#define        
enum MAN
{
  NAME,
  HIGHT,
  WEIGHT,
  SEX;
};
//         
int main()
{
  188; //    
  const int num = 199; //const      
  return 0;
}

文字列;エスケープ文字、コメント
以前のhello worldプログラムでは
printf("hello world
"
);

画面に表示されているのはhello worldです.printfカッコの中にあります.
"hello world
"

これは何ですか.このような二重引用符(Double Quote)によって引き起こされた一連の文字を文字列文字面値(String Literal)または略称文字列と呼ぶ.注意:文字列の終了フラグは、0のエスケープ文字です.文字列の長さを計算するとき0は終了フラグで、文字列の内容ではありません.では、何ですか.
エスケープ文字
実際には、前のhello worldでは、出力内容をhelloに変更することができ、縦になることができます.
h
e
l
l
o

なぜですか?これはC言語でプログラムによって別の操作として読まれるためで、これはエスケープ文字と呼ばれています.ここでは読者のためにいくつかのエスケープ文字をまとめました.
\"    //             
\\    //         ,             
\a    //    
\b    //   
\t    //     
\f    //   

// \v // \r // \ddd //ddd 1~3 。 : \130 X \xddd //ddd 3 。 : \x030

コメント
前のコードの断片の中で、私达はこのようなもの//その后についているものがすべて灰色になったようなことを発见することができて、これはプログラムの运行の中で、//后のものは自动的にコンピュータに见落とされて、この属性を利用して、私达はプログラムの中で自分の书きたいものを好きなように书くことができますしかし、一般的に//はプログラマーにコードを解釈したり、不要なコードを注釈したりするのに使われています.//のほかに/**/という注釈方法もあります.直接複数行の注釈をすることができます.多くのプログラマーが面白いことをしています.
せんたくぶん
よく勉強すれば、将来は高給の仕事が見つかり、そうでなければ失敗者になるという言葉をC言語でどのように表現するか、選択文if elseを導入します
#include
int main()
{
  if(    )
  {
    printf("  ,  ,   !
"
); } else{ printf(" you wii be a loser
"
); } return 0; }

ループステートメント
コードを叩くのは日々の行為で、あなたのコード量がある程度蓄積されてこそ成功することができます.このような何度も繰り返す必要がある行為をC言語で実現する方法は何ですか.ループは私たちに解決策を提供しています.
//while     
 #include  
 int main() 
 {    
 	printf("    !
"
); int line = 0; while(line<=20000) { line++; printf("
"
); } if(line>20000) printf(" !!
"
); return 0; }

以上はwhileサイクルで、ある目標を達成していないときは、目標を達成するために多くの仕事を続けなければなりません.また、ループにはdo whileループとforループがあり、これらは後で学び、原理は似ています.
関数#カンスウ#
数学の中で関数f(x)の概念があって、私達はどのようにC言語の中で実現します
#include
int f(int a)
{
  return a*a;
}
int main()
{
 	 int x,
 	 int x_square = f(x);
 	 printf("x    = %d
"
, x_square); return 0; }

ここでは,関数式をx二乗に設定し,実際にはC言語における関数は数学における関数概念だけでなく,他のより複雑な機能も実現できる.1つの関数は繰り返し利用することができ、関数の特徴はコードを簡略化し、コードを多重化することである.
はいれつ
前にいくつかのデータ型を紹介しましたが、問題が来て、1つの整数を保存するのは簡単です.では、私は複数の整数を保存して、1から100まで保存したら、どうやって保存しますか.ここで,配列の概念配列,すなわち同じタイプの要素の集合を引き出したが,配列要素は下に0と表記された場所から格納されることに注目すべきである.
int arr[10] = {1,2,3,4,5,6,7,8,9,10};  //     

使用方法
#include
int main()
{
  int arr[10]={1,2,3,4,5,6,7,8,9,10};
  int n=0;
  while(n!=10){
    printf("%d
"
,arr[n]); n++; } return 0; }
1
2
3
4
5
6
7
8
9
10

1~10の10の数字が出力されます.
オペレータ
算術オペレータ、シフトオペレータ、ビットオペレータ、割り当てオペレータ、単一オペレータ、リレーショナルオペレータ、論理オペレータ、条件オペレータ、カンマ式、下表参照、関数呼び出し、構造メンバー算術オペレータ:
 +// 
 -// 
 * // 
 / // 
 %//(  )

シフトオペレータ:
<<  //(     )
>>  //(     )

ビットオペレータ
&  // (   )           , 0 0, 1 1
|  // (   )           , 1 1, 0 0
^  // (   )            ,   1,   0

割り当てオペレータ:
=+=-=/=%=>>=<<=&=|=^=

単一オペレータ:
//      
-   //  
+   //  
&   //    
sizeof//         (      )
~    //          -   //  、  –-
++    //  、  ++
(  )   //      

論理オペレータ:
&&   //   
||   //   

条件オペレータ:
exp1 ? exp2 ; exp3 //    if else  

リレーショナルオペレータ
>  
>= 
< 
<= 
!=      //    “   ”
==      //    “  ”


キーワード
一般的なキーワードは次のとおりです.
auto	//      
short	//          
int	    //         
long	//          
float	//          
double	//          
char	//          
struct	//          
union	//        
enum	//      
typedef	//          
const	//      
unsigned//            
signed	//            
extern	//             
register//       
static	//      
volatile//                 
void	//            ,       
if		//    
else	//        (  if   )
switch	//      
case	//      
for		//      
do		//        
while	//         
goto	//       
continue//      ,       
break	//      
default	//      “  ”  
sizeof	//        
return	//       (     ,      )    

#define不思議なマクロ
C言語では、#defineは非常に不思議な存在であり、定数を定義するだけでなく、関数を定義したり、キーワードを定義したりすることができます.
//define        
#define MAX 1000 
//define    
#define ADD(x, y) ((x)+(y))
#include 
int main() 
{    
	int sum = ADD(2, 3); 
   	printf("sum = %d
"
, sum); sum = 10*ADD(2, 3); printf("sum = %d
"
, sum); return 0; }

ししん
C言語の難点といえば、間違いなくポインタです.ポインタを理解するには、コンピュータの下部に関する知識を理解しなければなりません.メモリはコンピュータ上で特に重要なメモリであり、コンピュータ内のすべてのプログラムの実行はメモリの中で行われています.メモリを効率的に使用するために、メモリを小さなメモリユニットに分割し、各メモリユニットのサイズは1バイトです.メモリの各セルに効率的にアクセスするために、メモリセルのアドレスと呼ばれるメモリセルに番号が付けられます.ポインタは、アドレスを格納するための変数であり、他の変数のアドレスを格納し、プログラムがアドレスを通じて変数に直接アクセスできるようにする.
#include
int main()
{
  int num = 10;
  int *p;    //      p
  p=&num;    // p  num   ,        
  printf("%d
"
,*p); // num printf("%p
"
,&p); // p return 0; }

ポインタ変数のサイズ
各タイプのポインタサイズが同じかどうかを知るために、次のコードがあります.
#include
int main()
{
  printf("%d
"
,sizeof(char *)); printf("%d
"
,sizeof(int *)); printf("%d
"
,sizeof(double *)); printf("%d
"
,sizeof(float *)); printf("%d
"
,sizeof(short *)); return 0; }

同じ数字が表示されていますが、ポインタのサイズは使用するプラットフォームに関係しており、ポインタは32ビットプラットフォームで4バイト、64ビットプラットフォームで8バイトのサイズです.
こうぞうたい
一つの物体を記述するには、その大きさ、外観、重量を記述する必要があります.一人でも年齢、性別、名前、身長、体重などの情報が必要です.C言語では、これらの情報を記述できるものがあります.構造体です.
#include
struct People //     
{
  char name[10];
  int age;
  int weight;
  float hight;
  char sex;
};
int main()
{
  struct People a={"john",20,100,1.87,"men"};  //       
  printf("  :%s   :%d   :%d   :%f
"
,a.name,a.age,a.weight,a.hight,a.sex); return 0; }

もちろん、そのアドレスにアクセスして構造体変数の値を出力し、->または(*p)を使用してアクセスすることもできます.
#include
struct People //     
{
  char name[10];
  int age;
  int weight;
  float hight;
  char sex;
};
int main()
{
  struct People a={"john",20,100,1.87,"men"};  //       
  printf("  :%s   :%d   :%d  :%f
"
,a.name,a.age,a.weight,a.hight,a.sex); struct People *p = &a; // p a printf(" :%s :%d :%d :%f
"
,a->name,a->age,a->weight,a->hight,a->sex); // p , -> return 0; }a