Zusammenfassung der Kernwissenspunkte der C-Sprache

1. Datentyp

char //字符数据类型 'A'
short //短整型
int   //整型
long  //长整型
long long //更长的整型
float      //单精度浮点数
double     //双精度浮点数

double d = 3.14;
printf("%lf\n", d);

unsigned char i ;//0~255
char i//-128~0~127

1. Warum gibt es so viele Arten?

printf("%d\n",sizeof(char));	//1
printf("%d\n",sizeof(short));	//2
printf("%d\n",sizeof(int));		//4
printf("%d\n",sizeof(long));	//4/8
printf("%d\n",sizeof(long long));//8
printf("%d\n",sizeof(float));	//4
printf("%d\n",sizeof(double));	//8
注:同一类型的有符号数和无符号数所占字节数相同
short int age = 20;  //2^16=65535

Das heißt, um verschiedene Werte im Leben umfassender zum Ausdruck zu bringen

Datenspeichermethode

Fügen Sie hier eine Bildbeschreibung ein

Konstanten und Variablen

1. Geltungsbereich

Wenn eine lokale Variable und eine globale Variable identisch sind, hat die lokale Variable Vorrang.

//取地址符号&
scanf("%d%d",&num1,&num2);
//避免编译器提示语法不安全
#define _CRT_SECURE_NO_WARNINGS 1

Deklarieren Sie extren als externes Symbol

extern int g_val;
printf("g_val = %d\n", g_val);

2. Der Lebenszyklus von Variablen

  • Der Lebenszyklus lokaler Variablen: Der Lebenszyklus des Betretens des Bereichs beginnt und der Lebenszyklus des Betretens des Bereichs endet.
  • Lebenszyklus globaler Variablen: der Lebenszyklus des gesamten Programms

3. Konstanten

  • wörtliche Konstante
  • const modifizierte konstante Variable
  • Durch #define definierte Bezeichnerkonstanten
  • Aufzählungskonstante
const int num = 4;
num = 8 //不能进行更改

int  n = 10;
int arr[n] = {
    
    0};//应该放入常量表达式
enum Sex
{
    
    
	MALE,
	FEMALE,
	SECRET
};
int main()
{
    
    
	printf("%d\n",MALE);	//0
	printf("%d\n",FEMALE);	//1
	printf("%d\n",SECRET);	//2
	enum Sex sex = MALE;
	sex = FEMALE;	//可更改
	FEMALE = 6;		//不能更改
}

Array-String

int main()
{
    
    
	char arr1[] = "abc";
	//'a','b','c','\0'
	//'\0':字符串的结束标志 
	char arr2[] = {
    
    'a','b','c'};
	char arr3[] = {
    
    'a','b','c','\0'};
	printf("%s\n",arr1); //abc
	printf("%s\n",arr2); //abc烫烫烫bc
	printf("%s\n",arr3); //abc
	printf("%d\n",strlen(arr1));//3
	printf("%d\n",strlen(arr2));//随机值
	
	printf("%d\n",strlen("c:\test\32\test.c"));//13
	//32是两个8进制数字,转化为10进制后ASCII码值所对应的字符
	char arr4[5] = {
    
    'a',98};
	printf("%d\n",sizeof(arr4));//2,所占字节大小
	printf("%d\n",sizeof(arr1));//4
}

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

1. Zweidimensionales Array

int arr[][4] = {
    
    {
    
    1,2,3,4},{
    
    5,6,7,8}};
//列下标不能省略

Der Parameter hat die Form eines Arrays.
Fügen Sie hier eine Bildbeschreibung ein
Der Parameter hat die Form eines Zeigers

*((*p+i)+j) =  (*(p+i)[ j ])

Fügen Sie hier eine Bildbeschreibung ein

Zeiger

Speichern Sie die Adresse der Speichereinheit, die Speichereinheit ist in Bytes
*–> Dereferenzierungsoperator
Die Zeigergröße beträgt 4 Bytes auf einer 32-Bit-Plattform

double d = 3.14;
double* pd = &d;
//sizeof(pd) = sizeof(double*)

指针类型决定了指针解引用操作的时候,能够访问空间的大小
int *p;//能够访问4个字节
char *p;//能够访问1个字节
指针类型决定了指针的步长
int *p; //p+1->4
cahr *p; //p+1->1
double *p; //p+1->8

Fügen Sie hier eine Bildbeschreibung ein

1. Array von Zeigern

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

2. Array-Zeiger

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

3. Zusammenfassung

Fügen Sie hier eine Bildbeschreibung ein

Zeiger vorgerückt

1. Funktionszeiger

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

2. Array von Funktionszeigern

Kann die Switch-Anweisung ersetzen
Fügen Sie hier eine Bildbeschreibung ein

3. Ein Zeiger auf ein Array von Funktionszeigern

Fügen Sie hier eine Bildbeschreibung ein

Sortierfunktion

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

String-Funktionen

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

Schlüsselwort (statische Definition)

Statische Änderung lokaler Variablen: Verlängert den Lebenszyklus lokaler Variablen.
Statische Änderung globaler Variablen: Einschränkung des Bereichs globaler Variablen. Wenn eine andere Funktion extern deklariert, tritt ein Fehler auf.
Statische Änderung von Funktionen: Änderung des Link-Attributs der Funktion , wodurch die externen Linkattribute in interne Linkattribute umgewandelt werden

Makrodefinition

#define MAX(X,Y) (X>Y?X:Y)
int main()
{
    
    
	max = MAX(a,b);//max = (a>b?a,b)
}

Struktur

//结构体变量.成员
//结构体指针->成员
struct Book
{
    
    
	char name[20];
};
int main()
{
    
    
	struct Book b1 = {
    
    "CCC"};
	struct Book* pb = &b1;
	printf("%s\n",b1.name);
	printf("%s\n",(*pb).name);
	printf("%s\n",pb->name);
//更改成员数据
	b1.name = "uuuu"//err
	strcpy(b1.name,"uuuu");//string.h
}

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

Zyklus

	int i = 1;
	while(i<10)
	{
    
    
		if(i == 5)
			continue;
		printf("%d",i);
		i++;
	}
	//陷入死循环,当i=5时,跳到while,然后到continue,还会回到while
	//ctrl+z 可结束
	while(ch = getchar()! = EOF)
	{
    
    
		putchar(ch);
	}
	char password[20] = {
    
    0};
	scanf("%s",password);
	ret = getchar();
	//当输入完后,按下回车键,‘\n’就会被ret接收
	while(ch=getchar()!='\n')
	{
    
    
		;
	}
	//将缓冲区读取完

Die Schleifenkontrollvariable der for-Anweisung:
1. Ändern Sie nicht die Schleifenvariable im Hauptteil der for-Schleife, um zu verhindern, dass die for-Schleife die Kontrolle verliert.
2. Es wird empfohlen, den Wert der Schleifenkontrollvariablen der for-Anweisung zu ändern Übernehmen Sie die Schreibmethode „Öffnen Sie das Intervall nach dem Schließen vor“

	int i=0,k=0;
	for(i=0,k=0;k=0;i++)
		k++;
	//不进入循环,k=0为假
#include<windows.h>
Sleep(1000);
#include<stdlib.h>
system("cls");//清空屏幕
//时间戳
srand((unsigned int) time()); 
ret = rand()

Funktion

1. Funktionsaufruf

Nachdem der formale Parameter instanziiert wurde, entspricht er tatsächlich einer temporären Kopie des tatsächlichen Parameters.

Der Aufruf nach Adresse kann eine echte Verbindung zwischen der Funktion und den Variablen außerhalb der Funktion herstellen, dh das Innere der Funktion kann die Variablen außerhalb der Funktion direkt manipulieren

Die printf-Funktion gibt die Anzahl der Zeichen zurück
Fügen Sie hier eine Bildbeschreibung ein

2. Rekursion

1. Es gibt Einschränkungen. Wenn diese Einschränkung erfüllt ist, wird die Rekursion nicht fortgesetzt

//计算字符串长度
//char arr[] = "bit";
//int len = my_strlen(arr);
int my_strlen(char *str)
{
    
    
	if(*str!='\0')
		return 1+my_strlen(str+1);
	else
		return 0;
}

3. Arrays als Funktionsparameter

//arr是数组,对数组arr进行传参,实际上传递过去的是数组arr的首元素的地址 &arr[0]
buble_sort(arr,sr);

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

4. Zeiger als Parameter

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

Operator

1. Arithmetische Operatoren

Neben dem %-Operator funktionieren mehrere andere Operatoren mit Ganzzahlen und Gleitkommazahlen.

2. Schichtoperator

1. Arithmetische Rechtsverschiebung: Verwerfen der rechten Seite, Auffüllen des ursprünglichen Vorzeichenbits auf der linken Seite.
2. Logische Rechtsverschiebung: Auffüllen der Null auf der linken Seite

3. Logische Operatoren

^异或运算,相同为0,不同为1
!逻辑反操作
EOF:文件结束标志

取反
	int a = 0//4个字节,32bit位
	int b = ~a;//b是有符号数的整形
	//存储的是补码,打印出的是原码,b=-1
	

dynamisches Gedächtnis

#include <stdlib.h>
#include <string.h>
#include <errno.h>
int main()
{
    
    
	//像内存申请10个整形的空间
	int* p = (int *)malloc(10*sizeof(int));
	if(p==NULL)
	{
    
    
		//打印错误原因的一个方式
		printf("%s",strerror(errno));
	}
	free(p)
	p=NULL;
	return 0;
}

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

flexibles Array

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

Dateioperation

Fügen Sie hier eine Bildbeschreibung ein
# Dateivorgänge

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

Ich denke du magst

Origin blog.csdn.net/Strive_LiJiaLe/article/details/127239767
Empfohlen
Rangfolge