Skip to content

基本数据类型

在使用一个变量时

定义intlong intcharfloatdouble
定义类型整数类型整数类型字符类型浮点类型浮点类型
所占字节4字节8字节(长整型)1字节4字节8字节(精度更高)

数组

一维数组

  1. 定义20个整型变量

如:int a[20] 批量定义,且连续,从a[0]到a[19]

  1. 定义15个字符类型变量

如:char b[15]

  1. 定义10个浮点变量类型

如:float c[10] 或者 double c[10]

二维数组

  1. 每类数组分别需要三个怎么定义和赋值

如:需3组10个整型变量类型 int a[3][10]

指针的定义、赋值、通过地址取值的方式

指针变量的定义与赋值

  1. 比如定义一个p(int* p)地址为0Xff12,这代表声明一个指针p
  2. 定义一个整型x为12(int x=12)地址为0Xff96
  3. 把整型x地址存到p中(int* P=&x)

如何取指针变量里面的值

  1. 定义一个整型y为7(int y=7)
  2. 把y的值赋给q(int* q = &y)这代表声明一个指针p并且给p初始化为指向整数变量 y的地址
  3. 方式一:取到其中的值在q前加*号(*q)打印出来printf("%d",*q);会显示为7,也可以重新定义y的值比如定义为y为100(y=100)重新打印q就变为了100
  4. 方式二:取到其中的值在q后选择第几个值,如第0个值(q[0])打印出来printf("%d",q[0]);也会显示为7
  5. 其中 %d,它们通常与输入和输出函数(如 printfscanf)一起使用,以确保数据以正确的方式进行格式化和显示
  6. 一些常见的格式说明符包括:
  • %d: 用于整数(int)的输出。
  • %f: 用于浮点数(floatdouble)的输出。
  • %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;