1.C语言初识

C语言初识

  • C语言初识
    • 基础知识
    • hello world
    • 数据类型
    • 变量、常量
      • 变量命名
      • 变量分类
      • 变量的使用
      • 变量的作用域
    • 常量
    • 字符
      • 字符串
      • 转义字符
    • 选择语句
      • 循环语句
  • 函数;数组
    • 函数
    • 数组
      • 数组下标
  • 操作符
    • 操作符
      • 算术操作符
      • 移位操作符、位操作符
      • 赋值操作符
      • 单目操作符
      • 关系操作符
      • 逻辑操作符
      • 条件操作符__三目操作符 exp__表达式
      • 逗号表达式
      • 下标引用、函数调用和结构成员
    • 关键字
      • typedef__类型重命名
      • static__
      • register
    • #define 定义常量和宏
    • 结构体 struct
  • static; define; struct
    • static__
    • register
    • \#define 定义常量和宏
    • 结构体 struct
  • 指针
    • 内存
      • 取变量地址
      • 指针变量 int* p;存放指针的变量
    • 指针变量大小

C语言初识

基础知识

C面向过程,C++,Java面向对象。
text.h头文件
test.c
test.cpp编译器会按C++编译
编辑、(编译、连接、运行 ctrl+F5)、调试 F5 F10
掌握了一定的语法,有时间就刷题,伴随整个学习过程。

Byte=8bit, 1024Byte=KB_MB_GB_TB_PB

hello world

#include <stdio.h>
int main()
{
	printf("hello world\n");
	returen 0;//返回整数
}

代码从main函数开始写。main函数是程序的开始,从main函数第一行执行,只能存在一个。
printf:是一个库函数,在屏幕上打印数据,使用前需要包含头文件#include <stdio.h>
“”:是字符串
/n:是换行符
returen 0:返回整数

数据类型

数据类型意义字节
char字符数据类型1
short短整型2
int整型4
long长整型4\8
long long整形8
float单精度浮点数4
double双精度浮点数8
long double扩展精度浮点数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(long));
	printf("%d\n", sizeof(long long));
	printf("%d\n", sizeof(float));
	printf("%d\n", sizeof(double));
	printf("%d\n", sizeof(long double));
return 0;  
}

%d:以10进制的形式打印一个整数
sizeof:操作符,计算类型/变量所占内存大小

变量、常量

生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)
有些值是可变的(比如:年龄,体重,薪资)。

变量命名

只能由字母(包括大写和小写)、数字和下划线( _ )组成。
不能以数字开头。
长度不能超过63个字符。
变量名中区分大小写的。
变量名不能使用关键字。

#include <stdio.h> 
int main() 
{
	int age=20; 
	//类型 变量名 = 初始值

	double weight = 55.5; 
	//55.5默认为double

	float weight2 = 55.5f; 
	//55.5f为float 
	//变量名不能以数字开头

	return 0; 
}

变量分类

#include <stdio.h>
int global = 2019;//全局变量
int main()
{
	int local = 2018;//局部变量
	int global = 2020;//局部变量
	printf("global = %d\n", global);//打印结果为global = 2020
	return 0;
}

局部变量 放在框外的变量
全局变量 放在框内
全局和局部冲突时,局部优先

变量的使用

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int num1 = 0;
	int num2 = 0;
	int sum = 0;
	printf("输入两个操作数:>");
	scanf("%d %d", &num1, &num2);
	//scanf(格式%d整型,&取地址操作符,取出num1的地址)
	sum = num1 + num2;
	printf("sum = %d\n", sum);
	return 0;
}

使用scanf报错:
错误 C4996 ‘scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
(微软编译器认为scanf函数不安全,建议使用scanf_s。但_s只有VS认识)
(1.建议使用scanf, 在第一行加:#define _CRT_SECURE_NO_WARNINGS 1)
(2.在newc++.file中加上#define _CRT_SECURE_NO_WARNINGS 1,默认添加)

#define _CRT_SECURE_NO_WARNINGS 1
//scanf:输入数据,从键盘读取到内存
//printf:输出数据,从内存输出到屏幕
//库函数-C语言编译器提供的函数,使用时需要包含头文件
#include <stdio.h>
int main()
{
	//int a = 0;
	//scanf("%d",&a);
	%d输入格式,&a取地址a,即数据存储地址
	//printf("%d",a);
	char ch = 0;
	scanf("%c",&ch);
	printf("%c",ch);
	return 0;
}

%c-字符
%d-整形
%s-字符串
%f-float
%lf-double
%p-地址的打印

变量的作用域

int g_val = 2024;//add.c 全局变量

extern int g_val;//需要声明外部符号才能使用全局变量
printf("%d",g_val);

作用域(scope)

  1. 局部变量:局部范围。
  2. 全局变量:整个工程。
  3. 声明外部符号才能使用全局变量:extern int g_val;
    生命周期
    变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
    //变量创建的本质:在内存中开辟一块空间,存放数据。
    //销毁:把空间还给操作系统。
  4. 局部变量:进入作用域生命周期开始,出作用域生命周期结束。
  5. 全局变量:整个程序的生命周期

常量

#define SIZE 10//#define定义的标识符常量 
#define MAX 1000
#define CH 'W'
const int n = 3;//长变量本质还是变量

int arr[10];//数组中必须使用常量,不能使用[n]
int arr[SIZE]; //#define定义的标识符常量
  1. 字面常量。int a = 3;
  2. 常变量:具有常属性的变量。 const int n = 3;
  3. # define 定义的标识符常量 # define SIZE 10
  4. 枚举常量:一一列举(性别、颜色、血型)enum SEX
enum SEX
{//列出枚举类型enum SEX可能的值,默认从0开始。
	MALE=4,
	FEMALE,
	SECRET
};
int main()
{
	printf("%d\n",MALE);
	printf("%d\n", FEMALE);
	printf("%d\n", SECRET);
	return 0;
}

字符

字符串

#include <string.h>//warning C4013: “strlen”未定义;
int main()
{
	char ch1[6] = { 'a','b','c','d','e','f' };
	char ch2[] = "abcdef";//字符串的结束标志是一个 \0的转义字符
	printf("%s\n", ch1);
	printf("%s\n", ch2);
	int len1 = strlen(ch1);//strlen:计算字符长度,\0不统计
	int len2 = strlen(ch2);
	printf("%d\n",len1);
	printf("%d\n", len2);
	//abcdef烫烫烫MF袆,since打印到\0停止
	//abcdef
	//19,since计算到\0停止
	//6
	return 0;
}

字符串:由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal)。字符串的结束标志是一个 \0的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。
请添加图片描述

调试:逐语句(S)-F11__逐过程(0)-F10__跳出(T)-Shift+F11

转义字符

int main()
{
	printf("(are you ok??)\n");//??)-->],三字母词会被转为]
	printf("(are you ok\?\?)\n");//\? 在书写连续多个问号时使用,防止他们被解析成三字母词
	return 0;
}
int main()
{
	printf("c:\test\test.c\n");
	printf("c:\\test\\test.c\n");
	//c:      est     est.c,since \t 会被解析为制表符tab
	//c:\test\test.c
	//\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符
	return 0;
}
转义字符释义
\?在书写连续多个问号时使用,防止他们被解析成三字母词
\’用于表示字符常量’
\“用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a警告字符,蜂鸣
\b退格符
\f进纸符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制的数字。 如: \130 表示字符X
\xdddd表示2个十六进制数字。 如: \x30 表示字符0
int main()
{
	printf("%c\n",'\130'); 
	//\ddd ddd表示1~3个8进制的数字。 如: \130--> X的ASCII码为130
	//8进制转化为10进制,130-->88
	printf("%c\n",'\x31'); 
	//\xdd dd表示2个十六进制数字。 如: \x31 1
	//16进制转化为10进制,31-->49
	return 0;
}

选择语句

//选择语句
int main()
{
	printf("start study.\n");
	printf("do you willing study?(1 or 0)\n");
	int flag = 0;
	scanf("%d",&flag);
	if (flag == 1)
		printf("good!\n");
	else
		printf("bad!\n");
	return 0;
}

if()后无;else无;赋值使用 ==

循环语句

int main()
{
	int line = 0;
	while (line < 50)
	{
		printf("write code:%d\n",line);
		line++;
	}
	if (line == 50)
		printf("get good jio!\n");
	else
		printf("continue!!!\n");
	return 0;
}

函数;数组

#include <stdio.h>
int main()
{
	return 0;
}

函数

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int ADD(int x, int y)//形参
{
	int z = x + y;
	return z;
}
int main()
{
	int a = 0; int b = 0;//实参
	scanf("%d %d", &a, &b);
	int sum = ADD(a, b);
	printf("%d\n",sum);
	return 0;
}

数组

int main()
{
	int arr[10];//整形数组
	char ch[8];//字符型数组
}

数组下标

int main() 
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; 
	int i = 0; 
	while (i < 10) 
	{
		printf("%d\n", arr[i]);//数组下标从0开始arr[0]

		i++;
	}
	return 0; 
}

操作符

操作符

算术操作符

/除法

  1. 整数除法:7/2
  2. 浮点数除法:7.0/2_除数被除数,至少一个是浮点数
    %取模
  3. mod_得到的是余数
  4. 7%2_只适用于整形运算
    7.0默认为double
    7.0f 认为是float

移位操作符、位操作符

>>右移 <<左移
&与 ^异或 |或

赋值操作符

= 赋值
符合赋值:a+=5–>a=a+5
+=自增 -= *= /=
&= ^= |=
>>= <<=

单目操作符

2+3 双目:有两个操作数

!
-
+
&
sizeof
~

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

单目:只有一个操作数
!:真假变换(0假,非0真)

int main()
{
	int a = 0;//0为假,非0为真
	if (a)//a为真,进入if
	{
		printf("ture\n");
	}
	if (!a)//a为假,进入if
	{
		printf("false\n");
	}
	printf("%d\n",!a);//会输出1
	return 0;
}

sizeof__操作数的类型长度(以字节为单位)是个操作符不是函数

int main()
{
	int a = 0;
	printf("%d", sizeof(a));
	printf("%d", sizeof a );//a的括号可以去掉,说明sizeoif不是函数
	printf("%d", sizeof(int));//但是int的不可以去掉4字节
	printf("%d", sizeof(double));//8字节
	return 0;
}

++自增

int main()
{
	int a = 1;
	int b = ++a;//前置++,先++再使用
	printf("a=%d b=%d\n", a, b);
	//a = 2 b = 2
	a = 1;
	b = a++;//后置++,先使用再++
	printf("a=%d b=%d\n", a, b);
	//a = 2 b = 1
	return 0;
}

(类型)强制类型转换

int main()
{
	int a = (int)3.14;//将3.14强制转换为整形
	printf("%d\n", a);//输出为3
	return 0;
}

关系操作符

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

逻辑操作符

&&
||
逻辑与
逻辑或

&&逻辑与全真为真 ||逻辑或一真则真

int main()
{
	int a = 0;
	int b = 5;
	if (a && b)//全真才真
	{
		printf("true\n");
	}
	else
		printf("false\n");
	return 0;
}

条件操作符__三目操作符 exp__表达式

exp1? exp2 : exp3
真 执行 不执行
假 不执行 执行

int main()
{
	int a = 0; int b = 0; int m = 0;
	scanf("%d %d", &a, &b);
	m = (a > b ? a : b);//a大于b?真就输出执行a,假就执行b
	printf("%d\n", m);
	return 0;
}

逗号表达式

exp1, exp2, exp3, …expN
从左向右依次计算
整个表达式的结果是最后一个表达式的结果

下标引用、函数调用和结构成员

[] () . ->
下标引用操作符[]

int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	//              0,1,2,3,4,5,6,7,8,9
	printf("%d\n", arr[5]);//下标5,输出为6,下标引用操作符[],数组下标从0开始
	return 0;
}

函数调用操作符()

int z = ADD(a , b);//函数调用操作符
printf("sth");//这个也是

关键字

autobreakcasecharconstcontinuedefaultdodouble elseenum
extern floatforgotoifintlongregisterreturnshortsigned
sizeofstatic structswitchtypedef unionunsignedvoidvolatilewhile

auto:自动__局部变量自动创建自动销毁,但是每个局部变量都有该性质,所以省略了auto int a;
break:循环__终止
case:switch case
char:数据类型__字符类型
const:修饰类型,常属性
continue:循环__继续
default:默认
do:循环__do while
enum:枚举类型
extern:声明外部符号的,修饰变量
goto:分支语句
register:寄存器
return:函数的返回
signed:修饰类型__有符号的
static:静止
struct:结构体
typedef:类型重命名
union:联合体类型
void:函数返回值,函数的参数,修饰指针,空的
volatile:少见
while:循环

typedef__类型重命名

typedef unsigned int u_int;
typedef unsigned long long ull;
int main()
{
	u_int num1 = 0;
	ull num2 = 2;
	return 0;
}

static__

在C语言中:
static是用来修饰变量和函数的

  1. 修饰局部变量-称为静态局部变量
  2. 修饰全局变量-称为静态全局变量
  3. 修饰函数-称为静态函数
    static 修饰局部变量的时候
    本来一个局部变量是存放在栈区的,如果被static修饰就存储到静态区了
    static 修饰局部变量改变了变量的存储类型(位置),使得这个静态变量的生命周期变长了,直到程序结束才结束
void test()
{
	//static int a = 5;//6 7 8 9 10 11 12 13 14 15
	int a = 5;//6 6 6 6 6 6 6 6 6 6
	a++;
	printf("%d ", a);
}
int main()
{
	int i = 0;
	while (i < 10)
	{
		test();
		i++;
	}
	return 0;
}

static修饰全局变量
全局变量具有外部链接属性,所以在其他源文件内部可以使用
static修饰全局变量,改变了全局变量的连接属性
又外部链接属性变成了内部连接属性,无法调用
无法解析的外部符号 _g_val
感觉作用域变小了,但是都在静态区

static int g_val = 2024;//add.c

extern int g_val;//声明外部符号
int main()
{
	printf("%d\n", g_val);
	return 0;
}

static修饰函数和修饰全局变量一样
函数具有外部链接属性,被static修饰变成内部链接属性
使得该函数只能在自己源文件内部使用

static int ADD(int x, int y)
{
	return(x + y);
}//add.c

extern int ADD(int x,int y);//声明外部符号
int main()
{
	int a = 0; int b = 0;
	scanf("%d %d", &a, &b);
	int s = ADD(a, b);//无法解析的外部符号 _ADD
	printf("%d\n", s);
	return 0;
}

register

int main()
{
	//register仅仅是建议作用
	//建议放在寄存器中,但不是真的放,取决于编译器
	register int num = 10;
	return 0;
}

#define 定义常量和宏

定义常量

#define M 100
int main()
{
   int arr[M] = { 0 };//int为4字节,4*100=400
   int m = M;
   printf("%d\n", sizeof(arr));//400
   printf("%d\n", M);//100
   return 0;
}

定义宏

#define ADD(x,y)(x+y)//宏定义:名字(参数)(实现体)
int main()
{
	int a = 10; int b = 20;
	int c = ADD(a, b);
	printf("%d\n", c);
	return 0;
}

结构体 struct

char
short
int
long
long long
float
double
复杂类型:学生:名字char,年龄int,性别char

struct Stu//结构体
{
	char name[20];//一个汉字2个字符
	int age;
	char sex[5];//需要5个字符
};
int main()
{
	struct Stu s = {"ruarua",20,"man"};
	printf("%s %d %s\n",s.name,s.age,s.sex);//结构体访问成员操作符s.成员
	return 0;
}

static; define; struct

static__

在C语言中:
static是用来修饰变量和函数的

  1. 修饰局部变量-称为静态局部变量
  2. 修饰全局变量-称为静态全局变量
  3. 修饰函数-称为静态函数
    static 修饰局部变量的时候
    本来一个局部变量是存放在栈区的,如果被static修饰就存储到静态区了
    static 修饰局部变量改变了变量的存储类型(位置),使得这个静态变量的生命周期变长了,直到程序结束才结束
void test()
{
	//static int a = 5;//6 7 8 9 10 11 12 13 14 15
	int a = 5;//6 6 6 6 6 6 6 6 6 6
	a++;
	printf("%d ", a);
}
int main()
{
	int i = 0;
	while (i < 10)
	{
		test();
		i++;
	}
	return 0;
}

static修饰全局变量
全局变量具有外部链接属性,所以在其他源文件内部可以使用
static修饰全局变量,改变了全局变量的连接属性
又外部链接属性变成了内部连接属性,无法调用
无法解析的外部符号 _g_val
感觉作用域变小了,但是都在静态区

static int g_val = 2024;//add.c

extern int g_val;//声明外部符号
int main()
{
	printf("%d\n", g_val);
	return 0;
}

static修饰函数和修饰全局变量一样
函数具有外部链接属性,被static修饰变成内部链接属性
使得该函数只能在自己源文件内部使用

static int ADD(int x, int y)
{
	return(x + y);
}//add.c

extern int ADD(int x,int y);//声明外部符号
int main()
{
	int a = 0; int b = 0;
	scanf("%d %d", &a, &b);
	int s = ADD(a, b);//无法解析的外部符号 _ADD
	printf("%d\n", s);
	return 0;
}

register

int main()
{
	//register仅仅是建议作用
	//建议放在寄存器中,但不是真的放,取决于编译器
	register int num = 10;
	return 0;
}

#define 定义常量和宏

定义常量

#define M 100
int main()
{
   int arr[M] = { 0 };//int为4字节,4*100=400
   int m = M;
   printf("%d\n", sizeof(arr));//400
   printf("%d\n", M);//100
   return 0;
}

定义宏

#define ADD(x,y)(x+y)//宏定义:名字(参数)(实现体)
int main()
{
	int a = 10; int b = 20;
	int c = ADD(a, b);
	printf("%d\n", c);
	return 0;
}

结构体 struct

char
short
int
long
long long
float
double
复杂类型:学生:名字char,年龄int,性别char

struct Stu//结构体
{
	char name[20];//一个汉字2个字符
	int age;
	char sex[5];//需要5个字符
};
int main()
{
	struct Stu s = {"ruarua",20,"man"};
	printf("%s %d %s\n",s.name,s.age,s.sex);//结构体访问成员操作符s.成员
	return 0;
}

指针

内存

指针是用来访问内存的,就是内存单元的地址。
每个内存单元的大小是1个字节Byte 。
32位的计算机有32根地址线,电信号,可以管理2^32个字节的空间=4GB内存
![[Pasted image 20250101231015.png]]
变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。

取变量地址

0x开头是16进制

int main()
{
	int num = 10;//申请4字节空间
	&num;//取num地址,num4字节,每个字节都有地址,取出的是第一个字节的地址
	printf("%p\n", &num);//%p是以地址的形式打印__0x004ffbe8
	return 0;
}//一个整数4字节,32bit,16进制,4个二进制位转化一个16进制位

![[Pasted image 20250101232539.png]]

指针变量 int* p;存放指针的变量

*:p是指针变量
int:p指向的是int类型的变量

int main()
{
	int a = 10;
	int* p;//p为一个整形指针变量
	*p = 30;//*p,解引用p,*p就是a
	printf("%d\n", a);//a=30
	return 0;
}

指针变量大小

32位机器:地址是32个地址位,4字节;

64位机器:地址64位,8字节。

int main()
{
	int a = 10;
	int* p = &a;
	printf("%zd\n", sizeof(p));//x86是4字节,x64是8字节
	printf("%zd\n", sizeof(int*));//x86是4字节,x64是8字节
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/980181.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LINUX基础 - 网络基础 [一]

前言 在当今的数字化世界中&#xff0c;网络已成为计算机系统和应用的核心组成部分。Linux&#xff0c;作为一个开放源代码的操作系统&#xff0c;在服务器、嵌入式设备、以及开发环境中被广泛使用&#xff0c;而其强大的网络能力使其在网络管理和网络编程领域占据了重要地位。…

苹果廉价机型 iPhone 16e 影像系统深度解析

【人像拍摄差异】 尽管iPhone 16e支持后期焦点调整功能&#xff0c;但用户无法像iPhone 16系列那样通过点击屏幕实时切换拍摄主体。前置摄像头同样缺失人像深度控制功能&#xff0c;不过TrueTone原彩闪光灯系统在前后摄均有保留。 很多人都高估了 iPhone 的安全性&#xff0c;查…

游戏引擎学习第128天

开始 然而&#xff0c;我们仍然有一些工作要做&#xff0c;渲染部分并没有完全完成。虽然现在已经能够运行游戏&#xff0c;而且帧率已经可以接受&#xff0c;但仍然有一些东西需要进一步完善。正在使用调试构建编译版本&#xff0c;虽然调试版本的性能不如优化版本&#xff0…

几个api

几个api 原型链 可以阅读此文 Function instanceof Object // true Object instanceof Function // true Object.prototype.isPrototypeOf(Function) // true Function.prototype.isPrototypeOf(Object) // true Object.__proto__ Function.prototype // true Function.pro…

用DeepSeeker + AI app工具自动生成 APP代码

作为上海嘉冰信息技术有限公司创始人&#xff0c;我想做一个AI美食点评类APP&#xff0c;用户可以上传自己的美食图片并生成相应的AI美食点评&#xff0c;可以帮我详细描述一下这个APP&#xff0c;用于方便我的企业B端客户开拓本地生活的内容市场。 AI美食点评APP&#xff1a;开…

布署elfk-准备工作

建议申请5台机器部署elfk&#xff1a; filebeat(每台app)--> logstash(2台keepalived)--> elasticsearch(3台)--> kibana(部署es上)采集输出 处理转发 分布式存储 展示 ELK中文社区: 搜索客&#xff0c;搜索人自己的社区 官方…

利用PyQt简单的实现一个机器人的关节JOG界面

在上一篇文章中如何在Python用Plot画出一个简单的机器人模型&#xff0c;我们介绍了如何在Python中画出一个简单的机器人3D模型&#xff0c;但是有的时候我们需要通过界面去控制机器人每一个轴的转动&#xff0c;并实时的显示出当前机器人的关节位置和末端笛卡尔位姿。 那么要实…

制造业中的“大数据”:如何实现精准决策?

在当今全球经济竞争日趋激烈、技术变革周期不断缩短的环境下&#xff0c;制造业面临着全新的挑战和机遇。随着信息技术的飞速发展&#xff0c;“大数据”正以前所未有的速度渗透到制造业的各个环节&#xff0c;帮助企业实现更精准的决策、更灵活的生产组织以及更敏捷的市场响应…

【沙漠之心:揭秘尘封奇迹的终极之旅】

在地球的边缘,横亘着一片浩瀚无垠的沙漠,它既是生命的绝域,亦是奇迹孕育的秘境。这片广袤的沙漠,以其神秘莫测的面貌,自古以来便吸引着无数探险家、旅行者和梦想家的目光。它既是生命的禁区,让无数生命在这片不毛之地中消逝;同时,它也是奇迹的摇篮,孕育着无数未被发现…

线程控制(创建、终止、等待、分离)

目录 1.前言 2.创建线程 pthread_create函数 3.线程终止 pthread_exit函数 pthread_cancel函数 4.线程等待 5.线程分离 1.前言 在Linux系统中&#xff0c;并不存在真正的线程&#xff0c;只有轻量级进程。所以&#xff0c;Linux系统只提供了操作轻量级进程的系统调用…

有关Java中的集合(1):List<T>和Set<T>

学习目标 核心掌握List集合了解Set集合 1.List<T> ● java.util.List。有序列表。 ● List集合元素的特点&#xff1a;有序表示存取有序&#xff08;因为有索引&#xff09;而且可以重复 ● List常用实现类&#xff1a; ArrayList、LinkedList、Vector等 1.1 常用方法…

第J1周:ResNet50算法(Tensorflow版)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标 具体实现 &#xff08;一&#xff09;环境 语言环境&#xff1a;Python 3.10 编 译 器: PyCharm 框 架: TensorFlow &#xff08;二&#xff09;具体…

第三百七十一节 JavaFX教程 - JavaFX组合框

JavaFX教程 - JavaFX组合框 组合框允许用户选择几个选项之一。用户可以滚动到下拉列表。组合框可以是可编辑和不可编辑的。 创建组合框 以下代码将选项列表包装到ObservableList中&#xff0c;然后使用observable列表实例化ComboBox类。 ObservableList<String> optio…

《HelloGitHub》第 107 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 Python、…

和鲸科技推出人工智能通识课程解决方案,助力AI人才培养

2025年2月&#xff0c;教育部副部长吴岩应港澳特区政府邀请&#xff0c;率团赴港澳宣讲《教育强国建设规划纲要 (2024—2035 年)》。在港澳期间&#xff0c;吴岩阐释了教育强国目标的任务&#xff0c;并与特区政府官员交流推进人工智能人才培养的办法。这一系列行动体现出人工智…

2025 最新版鸿蒙 HarmonyOS 开发工具安装使用指南

为保证 DevEco Studio 正常运行&#xff0c;建议电脑配置满足如下要求&#xff1a; Windows 系统 操作系统&#xff1a;Windows10 64 位、Windows11 64 位内存&#xff1a;16GB 及以上硬盘&#xff1a;100GB 及以上分辨率&#xff1a;1280*800 像素及以上 macOS 系统 操作系统…

not support ClassForName

com.alibaba.fastjson2.JSONException: not support ClassForName : java.lang.String, you can config JSONReader.Feature.SupportClassForName 官方说明中提到默认关闭&#xff0c; 可通过配置开启 JSON.config(JSONReader.Feature.SupportClassForName);

面试常问的压力测试问题

性能测试作为软件开发中的关键环节&#xff0c;确保系统在高负载下仍能高效运行。压力测试作为性能测试的重要类型&#xff0c;旨在通过施加超出正常负载的压力&#xff0c;观察系统在极端条件下的表现。面试中&#xff0c;相关问题常被问及&#xff0c;包括定义、重要性、与负…

《白帽子讲 Web 安全》之移动 Web 安全

目录 摘要 一、WebView 简介 二、WebView 对外暴露 WebView 对外暴露的接口风险 三、通用型 XSS - Universal XSS 介绍 四、WebView 跨域访问 五、与本地代码交互 js 5.1接口暴露风险&#xff1a; 5.2漏洞利用&#xff1a; 5.3JavaScript 与 Native 代码通信 六、Chr…

MySQL-基础篇学习总结(2025-03-02)

几个月前学习了MySQL,后来忙着准备毕业论文的事情&#xff0c;好几个月没有回顾&#xff0c;最近又开始看这块内容准备春招了&#xff0c;所以决定把学习过的东西做一下总结。 1. MySQL概述 这部分内容介绍数据库相关概念及MySQL数据库的介绍、下载、安装、启动及连接。具体的…