再探指针——指针的简单应用

一、认识字节

八个二进制位算作一个单位,这个单位就称作字节。
在内存条中,其基本存储单位就是字节,一个字节也称作一个内存单元。
内存条就按照内存单元编号。我们经常说到的内存地址,就是指内存单元的编号。

二、理解指针

指针只不过是内存编号的一个“高大尚”的称呼而已,我们只要记住指针就是内存地址,指针就是内存单元的编号。
通过指针变量,就可转到另一块内存单元,进而操作该内存单元。

1.指针操作整型数组

代码

#include <stdio.h>

void reveal(int *array, int length);

int main(int argc, char *argv[]) {

    puts("遍历整型数组");
    int integerArray[8] = {51, 20, 14, 13, 59, 10, 19, 93};//整型数组
    int lengthOfIntegerArray = sizeof(integerArray) / sizeof(int);
    reveal(integerArray, lengthOfIntegerArray);    //遍历整型数组


    return 0;
}

void reveal(int *array, int length) {
    printf("[");
    for (int i = 0; i < length; i++) {
        if (i == length - 1)
            printf("%d]\n", *(array + i));
        else
            printf("%d,", *(i + array));
    }
}

运行展示

​​​​​​在这里插入图片描述
​​​​​​​​​​

2.指针操作字符数组

代码

#include <stdio.h>

void reveal(char *array);

int main(int argc, char *argv[]) {

    puts("遍历字符数组");
    char characterArray[128] = "I will meet you";//字符数组
    reveal(characterArray);    //遍历字符数组
    return 0;
}

void reveal(char *array)
{
    char * temporary=array;
    putchar('[');
    while(*temporary)//*temporary!='\0'
    {
        if(*(temporary+1)=='\0')
            printf("%c]",*temporary);
        else
            printf("%c,",*temporary);
        temporary++;
    }
}


运行展示

在这里插入图片描述
思考:现在想象一下,看到该博客的你有了”瞬间转移“的异能。只要你在脑子里想象你要去的地方,之后轻轻地吐口口水,不论多少,只要吐了就行,瞬间就能从一个地方转移到另一个地方。

这里的"瞬间转移"不同于以往的“瞬间转移”。以往的“瞬间转移”,只要想象就能去到自己想去的地方,而这里的“瞬间转移”在想象后还需要吐口水,为什么还要吐口水呢?

再思考:假设我们有个整型指针变量,存储着整型变量的指针。我们无法直接操作整型变量,只能操作整型指针变量。若要操作整形变量,是不是得在整型指针变量前加个星号 * ?那么这个星号和口水的功能是不是相同的?将你所在的空间转移到另一个你想去的空间。

光想象还不行(double * pointer=&salary;),还得吐口水(*pointer)才能去到你想去的地方。

指针是用来干什么的?答:转移空间!

三、指针的简单应用

1、指针在函数中的应用

在向函数传递指针(内存单元编号、内存单元地址)时,传递的是指针变量的值(内存单元的编号)或者某一个基本类型变量的指针(内存单元的编号),函数这边接收到指针变量的值(内存单元的编号)后,即可在函数内部操作函数外部的变量。

示例1:向函数传递指针变量的值
指针变量的值就是指针/地址
源码:
在这里插入图片描述
运行:
在这里插入图片描述

示例2: 向函数传递一个基本类型变量的指针/地址
源码:
在这里插入图片描述
运行:
在这里插入图片描述

2、指针操作数组

定义数组:int integer_array[10]时,其实数组名integer_array并不是代表整个数组,而是代表数组首个元素的地址/指针,并且integer_array是个常量,不可改变。知道这一点后,我们就可一改操作数组的常态,运用指针来操作。
示例1:为数组录入并输出数据
源码:
在这里插入图片描述

运行:
在这里插入图片描述
示例2:另类的指针操作数组
源码:
在这里插入图片描述
运行:
在这里插入图片描述
示例3:另类的指针操作数组
源码:
在这里插入图片描述
运行:
在这里插入图片描述

3、指针在函数中操作数组

主要有一个指针版冒泡排序函数,一个指针版遍历数组函数
源码:
在这里插入图片描述
运行:
在这里插入图片描述

看到这里,再探指针就完结了。相信自己,指针不过如此,,,,,,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值