初めてC言語を知る(下記)

8.機能

C 语言中的函数是一段可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的参数,也可以不接收。它由两部分组成:函数头和函数体。
**函数头:**包括返回值类型、函数名和形参声明;
**函数体:**复合语句,仅在摸个函数中使用的变量,原则上应在该函数中声明和使用,但要注意不能声明和形参同名的变量,否则会发生变量名冲突的错误。

コードデモ

#include <stdio.h>
int main()
{
    
    
    int a = 0;
    int b = 0;
    int c= 0;
    printf("输入两个操作数:");
    scanf("%d %d", &a, &b);
    c = a+b;
    printf("sum = %d\n", c);
    return 0; }
    //缺点:每两个数相加都要重复上述代码.如果需要执行复杂的功能,每次都要重复写很多代码,很麻烦
上述代码,写成函数如下:
#include <stdio.h>
int Add(int x, int y) 
{
    
    
   int z = x+y;
   return z; 
}
int main()
{
    
    
   int a= 0;
   int b = 0;
   int c= 0;
    printf("输入两个操作数:");
    scanf("%d %d", &a, &b);
    c = Add(a, b);
    printf("sum = %d\n", c);
    return 0; 
    }
//函数可以反复使用,每次只需调用Add函数,就可以完成加法。其他复杂的功能也一样,调用函数,就可以达到效果,简化了代码

9.アレイ

(1)配列定義:
プログラム設計では、処理の便宜のために、同じタイプの複数の変数が整然とした形式で編成されています。同種のデータ要素のこれらの順序付けられたコレクションは、配列と呼ばれます。
例えば

arr[5]={
    
    1,2,3,4,5};
//arr数组大小为5,依次放了1,2,3,4,5

(2)配列の添え字
ここに画像の説明を挿入
配列の添え字は0から始まり、1ずつ増加します。

3)配列の使用

#include <stdio.h>
int main()
{
    
    
 int i = 0;
 int arr[5] = {
    
    1,2,3,4,5};
 for(i=0; i<5; i++)
  {
    
    
       printf("%d ", arr[i]);
  }
 printf("\n");
    return 0; 
 }

ここに画像の説明を挿入

10.オペレーター

ここに画像の説明を挿入
単項演算子

!           逻辑反操作
-           负值
+           正值
&           取地址
sizeof      操作数的类型长度(以字节为单位)
~           对一个数的二进制按位取反
--          前置、后置--
++          前置、后置++
*           间接访问操作符(解引用操作符) 
(类型)       强制类型转换

関係演算子

>
>=
<
<=
!=   用于测试“不相等”
==      用于测试“相等”

論理演算子

&&     逻辑与
||     逻辑或

条件演算子

exp1 ? exp2 : exp3

カンマ式

exp1, exp2, exp3, …expN

添え字参照、関数呼び出し、および構造体メンバー

[] () . ->

11.一般的なキーワード

(1)キーワードtypedef(型の再定義)

//将unsigned int 重命名为uint_32, 所以uint_32也是一个类型名
typedef unsigned int uint_32;
int main()
{
    
    
    //观察a和b,这两个变量的类型是一样的
    unsigned int a = 0;
    uint_32 b = 0;
    return 0; 
 }


(2) C言語のキーワードstatic
: staticは、変数と関数を変更するために使用され
ます。a。変更されたローカル変数-静的ローカル変数と呼ばれます

#include <stdio.h>
void test()
{
    
    
    //static修饰局部变量
    static int i = 0;
    i++;
    printf("%d ", i);
}
int main()
{
    
    
int i = 0;
    for(i=0; i<10; i++)
   {
    
    
        test();
   }
    return 0; 
}

ここに画像の説明を挿入

b。グローバル変数を装飾する-静的グローバル変数と呼ばれる

int g_val = 2018;
int main()
{
    
    
    printf("%d\n", g_val);
    return 0; }

ここに画像の説明を挿入

c**。装飾された関数-静的関数と呼ばれます**

//代码1
//add.c
int Add(int x, int y) 
{
    
    
    return c+y; }
//test.c
int main()
{
    
    
    printf("%d\n", Add(2, 3));
    return 0
 }


//代码2
//add.c
static int Add(int x, int y) 
{
    
    
    return c+y; }
//test.c
int main()
{
    
    
    printf("%d\n", Add(2, 3));
    return 0; 
 }

コード1は正常であり、コード2はコンパイル時に接続エラーが発生します。
結論
関数は静的に変更されるため、この関数はこのソースファイルでのみ使用でき、他のソースファイルでは使用できません。

12.#defineは定数とマクロを定義します

//define定义标识符常量
#define MAX 1000
//define定义宏
#define ADD(x, y) (x+y)
#include <stdio.h>
int main()
{
    
    
    int sum = ADD(2, 3);//会替换成(2+3)
    printf("sum = %d\n", sum);
    
    sum = 10*ADD(2, 3);//会替换成10*(2+3)
    printf("sum = %d\n", sum);
    
    return 0; 
}

ここに画像の説明を挿入

13.ポインタ

(1)メモリ
メモリはコンピュータ上で特に重要なメモリであり、コンピュータ内のプログラムの動作はメモリ内で行われます。
したがって、メモリを効率的に使用するために、メモリは小さなメモリユニットに分割され、各メモリユニットのサイズは1バイトになります。
メモリの各ユニットに効果的にアクセスするために、メモリユニットには番号が付けられ、これらの番号は
メモリユニットのアドレスと呼ばれます。

变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。
取出变量地址如下:
#include <stdio.h>
int main()
{
    
    
 int num = 10;
 &num;//取出num的地址
    //注:这里num的4个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址)
 printf("%p\n", &num);
 return 0;
 }
 //打印地址,%p是以地址的形式打印

ここに画像の説明を挿入
アドレスの保存には、ポインタ変数の定義が必要です

int num = 10;
int *p;//p为一个整形指针变量
p = &num;

ポインターの使用例:

#include <stdio.h>
int main()
{
    
    
 int num = 10;
 int *p = &num;
 *p = 20;
    return 0; 
}

例として整数ポインターを取り上げ、それを他のタイプに拡張します

#include <stdio.h>
int main()
{
    
    
 char ch = 'w';
 char* pc = &ch;
 *pc = 'q';
 printf("%c\n", ch);
    return 0; 
 }
 //输出结果为q

(2)ポインタ変数のサイズ

//指针变量的大小取决于地址的大小
//32位平台下地址是32个bit位(即4个字节)
//64位平台下地址是64个bit位(即8个字节)
#include <stdio.h>
int main()
{
    
    
    printf("%d\n", sizeof(char *));
    printf("%d\n", sizeof(short *));
    printf("%d\n", sizeof(int *));
    printf("%d\n", sizeof(double *));
    return 0; 
}

14.構造

结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。
比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。

ここでは、構造のみを使用してそれらを説明できます。
例えば:

struct Stu
{
    
    
    char name[10];//名字
    int age;      //年龄
    char sex[5];  //性别
    char id[10]//学号
}

おすすめ

転載: blog.csdn.net/qq_62316056/article/details/124055817