halisi7

一个专注技术的组织

0%

指针小练-c语言

说明:

  • 链表比数组更加灵活。

    ​ 例如:有一串已经从小到大排好序的数 2 3 5 8 9 10 18 26 32。现需要往这串数中插入 6 使其得 到的新序列仍符合从 小到大排列。如我们使用数组来实现这一操作,则需要将 8 和 8 后面的 数都依次往后挪一位。

  • 如何实现呢?

    1.使用指针。

    1. 指针就是用来存储内存地址的,为什么要分不同类型的指针呢?

      因为指针变量存储的是一个内存空间的首地址
      (第一个字节的地址),但是这个空间占用了多少个字节,用来存储什么类型的数,则是由指针的类型来标明的。

    2.使用指针和动态分配内存函数 malloc。

    ​ a.使用 malloc 函数时需要用到 stdlib.h 头文件 !!!

    ​ malloc 函数的作用就是从内存中申请分配指定字节 大小的内存空间。
    ​ 如果你不知道 int 类型是 4 个字节的,还可以使用 sizeof(int)获取 int 类型所占用的字节数,

    ​ 如下:
    ​ malloc(sizeof(int));

    ​ b. malloc 函数的返回类型是 void * 类型。

    ​ void * 表示未确定类型的指针。

    ​ 在 C 和 C++中,void * 类型可以强制转换为任何其他 类型的指针。

代码部分:

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <stdlib.h>//!!!
int main() {

int* p; //定义一个指针
p = malloc(sizeof(int)); //获取动态分配的内存空间地址
*p = 10; //向内存空间中写入10
printf("%d", *p); //输出内存中的值
getchar(); getchar();
return 0;

}

输出:

1
10

总结:

1.链表可以处理预先不知道变量个数的问题。

2.&叫取地址符。

3.在 C 语言中 * 号有三个用途,分别是:

    1.    乘号,用做乘法运算,例如 5*6。
    2.    申明一个指针,在定义指针变量时使用,例如 int *p;。
    3.    间接运算符,取得指针所指向的内存中的值,例如 printf("%d",*p);。
打赏一下作者~ ฅ( ̳• ◡ • ̳)ฅ