基本数据类型
在使用一个变量时
定义 | int | long int | char | float | double |
---|---|---|---|---|---|
定义类型 | 整数类型 | 整数类型 | 字符类型 | 浮点类型 | 浮点类型 |
所占字节 | 4字节 | 8字节(长整型) | 1字节 | 4字节 | 8字节(精度更高) |
数组
一维数组
- 定义20个整型变量
如:int a[20] 批量定义,且连续,从a[0]到a[19]
- 定义15个字符类型变量
如:char b[15]
- 定义10个浮点变量类型
如:float c[10] 或者 double c[10]
二维数组
- 每类数组分别需要三个怎么定义和赋值
如:需3组10个整型变量类型 int a[3][10]
指针的定义、赋值、通过地址取值的方式
指针变量的定义与赋值
- 比如定义一个p(int* p)地址为0Xff12,这代表声明一个指针p
- 定义一个整型x为12(int x=12)地址为0Xff96
- 把整型x地址存到p中(int* P=&x)
如何取指针变量里面的值
- 定义一个整型y为7(int y=7)
- 把y的值赋给q(int* q = &y)这代表声明一个指针p并且给p初始化为指向整数变量
y
的地址 - 方式一:取到其中的值在q前加*号(*q)打印出来printf("%d",*q);会显示为7,也可以重新定义y的值比如定义为y为100(y=100)重新打印q就变为了100
- 方式二:取到其中的值在q后选择第几个值,如第0个值(q[0])打印出来printf("%d",q[0]);也会显示为7
- 其中
%d
,它们通常与输入和输出函数(如printf
和scanf
)一起使用,以确保数据以正确的方式进行格式化和显示 - 一些常见的格式说明符包括:
%d
: 用于整数(int
)的输出。%f
: 用于浮点数(float
和double
)的输出。%c
: 用于字符的输出。%s
: 用于字符串的输出。%x
或%X
: 用于十六进制数的输出。%o
: 用于八进制数的输出%p
: 用于指针的输出
体现代码
c
#include <stdio.h>
int main() {
int y = 7;
int* q = &y;
printf("%d", *q); //用*取值
y=100;
printf("\n");
printf("%d",q[0]); //用偏移值取值
return 0;
}
指针和一维数组
两种方式第一种地址和偏移值如:q[0],第二种*和地址如:*q
测试代码:
c
#include <stdio.h>
int main() {
int a[3]={4,5,6}; //定义三个为a的一维数组
int* p=a; //将a数组给p指针赋值
//方式一
printf("%d,%d,%d\n",a[0],a[1],a[2]); //用偏移值表示a数组
printf("%d,%d,%d\n",*a,*a+1,*a+2); //用*表示a数组
printf("%d,%d,%d\n",p[0],p[1],p[2]); //用偏移值来表示指针p所在值
printf("%d,%d,%d\n",*p,*p+1,*p+2); //用*来表示指针p所在值
//方式二
printf("%d,%d,%d\n",(a+1)[0],(a+1)[1],(a+2)[0]); //a偏移的不同取值方式来取值
printf("%d,%d,%d\n",(p+1)[0],(p+1)[1],(p+2)[0]); //指针q偏移值不同取值方式来取值
}
指针和二维数组
结构体
如果值的类型比较多,比较杂,那么结构体的作用非常大
定义方式一-struct定义
struct student s1;
定义一个结构体变量s1
struct student s2[10];
定义一个结构体数组 s2,相当于同时定义了10个s2变量
c
定义一个student结构体
struct student
{
char s[20];
char n[20];
float s[3];
};
定义方式二-typedef定义
typedef类似于给一个类型取一个别的名字(重定义)
结构:typedef 数据类型 别名
如下,将struct student取一个别的名字为stu
c
typedef struct student
{
char s[20];
char n[20];
float s[3];
} stu;
结构体指针
struct student s1;
定义一个结构体变量s1
struct student s2[10];
定义一个结构体数组 s2,相当于同时定义了10个s2变量
struct student
通过typedef重定义为 stu
stu s3;
相当于 struct student s3;
定义一个结构体变量s3
stu s4[10];
相当于 struct student s4[10];
定义一个结构体数组 s4,相当于同时定义了10个s4变量
c
typedef struct LNode //定义一个结构体struct LNode
{
int data; //一个整数数据成员 data
struct LNode* next; //指向同一类型的结构体的指针成员 next
}LNode,*Linklist; //重新定义struct LNode的名字为LNode 和*Linklist
LNode s; //定义一个结构体变量s
Linklist p=&s; //定义一个指向 s 的 Linklist 类型的指针 p
其中 *Linklist
方便定义,使 Linklist p = &s;
等同于 struct LNode* p = &s;