C语言(一)
数据类型
| 类型 | 字节数 | 说明 |
|---|---|---|
| int | 4字节 | |
| float | 4字节 | 形式->0.123 或 1.23e-1 |
| double | 8字节 | 双精度浮点型 |
| char | 1字节 | 与int类型可通用,printf(“%c\n”,c+32);–>a |
| 字符串 | 字符数+1 | 字符串结尾\0字符不显示,用于判断字符串结束,因此+1 |
一个字节byte = 8 bit; 1 byte = 0000 0000
补充
| 类型 | 32位(byte) | 64位(byte) |
|---|---|---|
| char | 1 | 1 |
| short | 2 | 2 |
| int | 4 | 4 |
| long | 4 | 8 |
| long long | 8 | 8 |
| float | 4 | 4 |
| double | 8 | 8 |
printf函数
printf函数的具体代码格式
| 写法 | 含义 |
|---|---|
| %c | 字符 |
| %d | 带符号整数,-左对齐,不带右对齐(printf函数默认靠右对齐) |
| %x | 无符号十六进制数,用小写字母 |
| %X | 无符号十六进制数,用大写字母 |
| %f | 浮点数;%5.2f显示5位数字,并带有2位小数的浮点数 |
| %s | 一串字符,%10s代表占用10个字符位置 |
| %u | 无符号整数 |
| %p | 一个指针 |
写法示例
1 | printf("my name is %s, %d years old","why",20); |
数组
数组的定义
1 | //一维数组的定义格式 |
数组的初始化
| 数组初始化 | 例子 |
|---|---|
| (1)在定义数组时对数组元素赋初值。 | int a[10]={0,1,2,3,4,5,6,7,8,9};不能写成int a[10];a[10]={0,1,2,3,4,5,6,7,8,9} |
| (2)可以只给一部分元素赋值 | int a[10]={0,1,2,3,4}; |
| (3)使一个数组中全部元素的值为 0,那么可以写为 | int a[10]={0,0,0,0,0,0,0,0,0,0};或int a[10]={0}; |
| (4)在对全部数组元素赋初值时,数据的个数,可以不指定数组的长度 | int a[]={1,2,3,4,5}; |
- 数组名a存的是数组的起始地址,数组名传递到子函数后,形参接收到的是数组起始地址
- 指针在64为计算机上是8个字节
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19int k=10;
int a[k]; -->//有的编译器支持,但是有的编译器不支持,尽量还是不要这样使用
//另外不能直接给指针赋值一个数组
int *data;
data={1,2,3,4,5}; --> 错误
int *data
int arr[]={1,2,3,4,5};
data=arr --> 正确
//另外,数组名是一个常量指针,它指向数组第一个元素,无法被修改
//如果要修改,需要定义一个指针变量
int arr[]={1,2,3,4,5};
arr++; -->错误
int arr[]={1,2,3,4,5};
int *data=arr;
data++; -->正确
调试debug
进入子函数
- 按向下箭头进入子函数
- 按拐弯箭头越过子函数,只在当前函数一步一步走下去
查看变量内存视图
- 点击内存视图
- 输入&i,i为要查看内存视图的变量
指针
1 | //* 在变量定义中的意思 |
指针的写法注意要点
1 | int *a,b; // *靠近a,定义的是一个int指针变量a ,和一个普通int型变量b |
C++中的引用
C语言中值传递,函数传递的参数只是将i赋值给j,并没有改变i的值
1 | change(int j){ |
要想改变值,需要运用指针
1 | change(int* j){ //j是int类型指针,int |
C++中的应用,s省去了C语言中需要修改变量的步骤
1 | change(int &j){ //& 表示引用 |
struct结构体
定义结构体
这种方式定义的结构体,每次结构体声明都要
struct student s;指针声明struct student *p*;
1 | struct 结构体名{ |
给定义的结构体重命名,结构体声明方式直接
stu s;结构体指针pstu p;
1 | typedef struct Student{//下面起了别名stu后student可以省略不写 |
结构体数组
1 |
|
typedef的使用
1 | typedef int Element;//重命名int类型 Element i; |
结构体指针意义
结构体指针的主要目的之一是为了在函数之间传递结构体而不复制整个结构体的内容。通过传递指针,你可以在函数内部修改结构体的值,而不需要操作结构体的副本。
通过结构体名引用和结构体指针引用都可以修改结构体的内容。然而,有一些区别:
语法差异:使用结构体名时直接使用
.操作符,而使用结构体指针时使用->操作符。可读性和代码风格:在某些情况下,直接使用结构体名可能更清晰,尤其是当你知道你操作的是一个具体的结构体对象时。而使用指针可能更适用于需要传递结构体的地址或在函数中修改结构体的情况。
空指针检查:如果结构体指针是空指针(nullptr),对其进行操作可能导致未定义的行为。因此,在使用结构体指针之前,你需要确保它不是空指针。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 风起之时'blog!









