【C】指针详解上篇@指针进阶 —— 字符指针 | 数组指针 | 指针数组 | 数组传参和指针传参

简介: 字符指针 | 数组指针 | 指针数组 | 数组传参和指针传参

@TOC
引:
反爬链接

在指针的初阶已接触过指针的概念,并介绍了如下内容

1.指针是个变量,用来存放地址,地址唯一标识一块内存空间,所以地址也形象的被称作指针。
2.指针大小是固定的4/8字节(32位平台/64位平台)。
3.指针是有类型的,类型决定被看待的视角,即决定了 指针 +- 整数 跳过的步长;指针解引用 时的访问权限。
4.指针的运算:指针 +- 整数;指针 - 指针;指针大小比较。

有关这部分内容还有好多细节,我还没写文章,为了使内容连贯后期会考虑补一篇。
这篇文章,将探讨有关指针的高级主题。

正文开始@一个人的乐队

1.字符指针

字符指针有下面两种使用场景:
1.指向字符在这里插入图片描述

2.指向字符串
在这里插入图片描述
那么就有这样一道面试题
小伙伴们先来自己做做做看呐。

#include <stdio.h>

int main()
{
    char str1[] = "hello Asi.";
    char str2[] = "hello Asi.";
    char *str3 = "hello Asi.";
    char *str4 = "hello Asi.";
    if (str1 == str2)
        printf("str1 and str2 are same\n");
    else
        printf("str1 and str2 are not same\n");

    if (str3 == str4)
        printf("str3 and str4 are same\n");
    else
        printf("str3 and str4 are not same\n");

    return 0;
}

解析:
在这里插入图片描述

2.指针数组

指针数组即,==存放指针的数组==。

写几段代码,感受一下它的使用:
代码1:
在这里插入图片描述
代码2:
在这里插入图片描述

代码3:
在这里插入图片描述
这里 指针+-整数 的等价思想还是比较有用的。

3.数组指针

数组指针是什么?指针还是数组?
答案是:指针。其实做一个类比就好。
先做一个小小的知识铺垫,其实本来也是该包含在初阶内容之中滴。
arr与&arr的区别
在这里插入图片描述

定义类比:
在这里插入图片描述
这里既然知道了数组指针的概念,就做一道小练习:
问:p的类型应该怎么写?

#include <stdio.h>

int main()
{
    int* arr[10] = { 0 };
    //p = &arr;
    //问:p的类型应该怎么写?
    return 0;
}

解析:
在这里插入图片描述

数组指针的使用

数组指针用对还是蛮好用的,但用错了那是非常别扭。
错误示范:

在这里插入图片描述
那数组指针到底是怎样访问到每个元素的呢?
在这里插入图片描述下面就来看数组指针在二维数组中怎样使用:在这里插入图片描述
介绍了数组指针和指针数组的,我们一起来看看下面代码是什么意思:

int arr[5];
int *parr1[10];
int (*parr2)[10];
int (*parr3[10])[5];

解析:
在这里插入图片描述

4.数组传参和指针传参

写代码的时候难免要把【数组】或【指针】传给函数,那函数的参数如何设计呢?
4.1 一维数组传参
在这里插入图片描述

4.2 二维数组传参
在这里插入图片描述
4.3 一级指针传参
在这里插入图片描述

反向思考:当 函数参数 部分是一级指针时候,函数能接收什么参数?

在这里插入图片描述
4.4 二级指针传参
在这里插入图片描述

反向思考:当 函数参数 部分是二级指针时候,函数能接收什么参数?

在这里插入图片描述
未完待续

中篇将介绍:点击直达指针语法中篇@指针进阶 | 函数指针 | 函数指针数组 | 指向函数指针数组的指针

  • 函数指针

    • 函数指针数组
    • 指向函数指针数组的指针,

下篇将介绍:

回调函数
相关文章
|
14天前
使用指针访问数组元素
【10月更文挑战第30天】使用指针访问数组元素。
30 3
|
13天前
使用指针访问数组元素
【10月更文挑战第31天】使用指针访问数组元素。
27 2
|
22天前
|
算法 索引
单链表题+数组题(快慢指针和左右指针)
单链表题+数组题(快慢指针和左右指针)
27 1
|
1月前
|
存储
如何使用指针数组来实现动态二维数组
指针数组可以用来实现动态二维数组。首先,定义一个指向指针的指针变量,并使用 `malloc` 为它分配内存,然后为每个子数组分配内存。通过这种方式,可以灵活地创建和管理不同大小的二维数组。
|
1月前
|
存储
如何通过指针数组来实现二维数组?
介绍了二维数组和指针数组的概念及其区别,详细讲解了如何使用指针数组模拟二维数组,包括定义与分配内存、访问和赋值元素、以及正确释放内存的步骤,适用于需要动态处理二维数据的场景。
|
1月前
|
存储 算法 C语言
C语言:什么是指针数组,它有什么用
指针数组是C语言中一种特殊的数据结构,每个元素都是一个指针。它用于存储多个内存地址,方便对多个变量或数组进行操作,常用于字符串处理、动态内存分配等场景。
|
1月前
魔法指针 之 二级指针 指针数组
魔法指针 之 二级指针 指针数组
19 1
|
1月前
|
C语言
无头链表二级指针方式实现(C语言描述)
本文介绍了如何在C语言中使用二级指针实现无头链表,并提供了创建节点、插入、删除、查找、销毁链表等操作的函数实现,以及一个示例程序来演示这些操作。
24 0
|
2月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
|
3月前
|
C语言
【C初阶——指针5】鹏哥C语言系列文章,基本语法知识全面讲解——指针(5)
【C初阶——指针5】鹏哥C语言系列文章,基本语法知识全面讲解——指针(5)