一、数据类型
1. 基本数据类型
C语言中提供了一些基本数据类型,用于表示各种不同类型的数据:
- 整数类型:
int
:表示整数,通常占用4个字节。short int
:表示短整数,通常占用2个字节。long int
:表示长整数,通常占用4或8个字节。long long int
:表示更长的整数,通常占用8个字节。unsigned int
:表示无符号整数,只能表示非负整数。unsigned short int
、unsigned long int
、unsigned long long int
:分别表示无符号的短整数、长整数和更长的整数。
- 浮点类型:
float
:单精度浮点数,通常占用4个字节。double
:双精度浮点数,通常占用8个字节。long double
:扩展精度浮点数,通常占用10个字节或更多。
- 字符类型:
char
:表示单个字符,通常占用1个字节。可以存储字符或小整数(0到255)。
- 字符串类型:在C语言中,字符串是一维字符数组,并以空字符
\0
结尾。char str[] = "Hello, World!";
2. 枚举类型
enum
:用于定义枚举类型,其值是一些整型常量的集合。例如:enum Day {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
3. 复合数据类型
- 数组:用于存储一组相同类型的数据。
int arr[10];
- 结构体:用于将不同类型的数据组合在一起。
struct Point { int x; int y; };
- 指针:用于存储变量的地址。
int *p;
4. 类型定义
typedef
:用于给已有的数据类型定义一个新的名字。typedef unsigned long ulong;
二、顺序程序设计
1. 变量和常量
- 变量声明:
int a;// 整数类型 float b;// 浮点型 char c;// 字符型
- 变量初始化:
int a = 10; float b = 3.14; char c = 'A';
- 常量定义:
- 使用
#define
宏定义常量:#define PI 3.14
- 使用
const
关键字定义常量:const int MAX = 100;
- 使用
2. 运算符和表达式
- 算术运算符:
+
,-
,*
,/
,%
- 关系运算符:
==
,!=
,>
,<
,>=
,<=
- 逻辑运算符:
&&
,||
,!
- 位运算符:
&
,|
,^
,~
,<<
,>>
- 赋值运算符:
=
,+=
,-=
,*=
,/=
,%=
- 增量和减量运算符:
++
,--
3. 运算符优先级和结合性
运算符优先级决定了表达式中各部分的计算顺序,结合性决定了运算符的计算方向。
- 优先级:从高到低(部分运算符)
()
[]
->
.
!
~
++
--
+
-
*
&
sizeof
*
/
%
+
-
<<
>>
<
<=
>
>=
==
!=
&
^
|
&&
||
?:
=
+=
-=
*=
/=
%=
<<=
>>=
&=
^=
|=
- 结合性:从左到右(部分运算符)
- 左结合:
*
/
%
+
-
<<
>>
<
<=
>
>=
==
!=
&
^
|
&&
||
- 右结合:
=
+=
-=
*=
/=
%=
<<=
>>=
&=
^=
|=
?:
- 左结合:
4. 输入和输出
- 标准输入输出函数:C标准库提供了一些基本的输入输出函数,需要包含
<stdio.h>
头文件。printf
:格式化输出int x = 10; printf("x = %d\n", x);
scanf
:格式化输入int y; scanf("%d", &y);
gets
和puts
:用于字符串输入输出char str[50]; gets(str); puts(str);
5. 控制语句
- 顺序结构:代码按照顺序逐行执行。
- 选择结构:根据条件选择执行不同的代码。
if
语句:if (condition) { // 如果满足条件,那么执行.... } else { // 否则执行.... }
switch
语句:switch (expression) { case value1: // 如果expression这个变量等于value1,那么执行... break; case value2: // 如果expression这个变量等于value2,那么执行... break; default: // 否则执行... }
- 循环结构:重复执行某段代码。
for
循环:for (initialization; condition; increment) { // for循环:初始条件;循环进行的条件;每次循环完执行的任务 }
while
循环:while (condition) { // 如果满足条件,那么执行... }
do...while
循环:do { // 与while循环类似,满足条件则执行... } while (condition);
6. 作用域和生存期
- 局部变量:在函数或代码块内部声明,作用域为该函数或代码块。
- 全局变量:在所有函数外部声明,作用域为整个程序。
- 静态变量:使用
static
关键字声明,作用域为声明它的函数或代码块,但其生存期为整个程序运行期间。
#include <stdio.h>
int g = 10;
void foo() {
int a = 5;
// Static定义后面会细讲
static int s = 0;
s++;
printf("s = %d\n", s);
}
int main() {
foo(); // s = 1
foo(); // s = 2
return 0;
}
三、综合示例
下面是一个综合示例,展示了C语言中数据类型和顺序程序设计的应用:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义一个结构体
struct Student {
int id;
char name[50];
float gpa;
};
// 函数声明
void printStudent(struct Student s);
void updateGPA(struct Student *s, float newGPA);
int main() {
// 动态分配结构体数组
struct Student *students = (struct Student *)malloc(3 * sizeof(struct Student));
// 初始化学生数据
students[0].id = 1;
strcpy(students[0].name, "Alice");
students[0].gpa = 3.5;
students[1].id = 2;
strcpy(students[1].name, "Bob");
students[1].gpa = 3.8;
students[2].id = 3;
strcpy(students[2].name, "Charlie");
students[2].gpa = 3.2;
// 打印学生信息
for (int i = 0; i < 3; i++) {
printStudent(students[i]);
}
// 更新GPA
updateGPA(&students[0], 3.9);
printf("Updated GPA for %s: %.2f\n", students[0].name, students[0].gpa);
// 释放内存
free(students);
return 0;
}
// 打印学生信息
void printStudent(struct Student s) {
printf("ID: %d, Name: %s, GPA: %.2f\n", s.id, s.name, s.gpa);
}
// 更新学生GPA
void updateGPA(struct Student *s, float newGPA) {
s->gpa = newGPA;
}
四、总结
以上内容涵盖了C语言中的各种数据类型以及顺序程序设计的相关知识,包括变量、常量、运算符、控制结构、输入输出和内存分配。这些知识点是C语言编程的基础,理解和掌握这些内容将帮助你在C语言编程中应对各种复杂的任务和挑战。
创作不易,如果您觉得博主的文章对您有帮助,请考虑打赏一下博主。您的鼓励是我前进的最大动力!
标签:struct,int,long,C语言,运算符,students,顺序程序,Student,程序设计 From: https://blog.csdn.net/zgy11026/article/details/139382035