【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 二级指针传参
在这里插入图片描述

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

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

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

  • 函数指针

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

下篇将介绍:

回调函数
相关文章
|
28天前
|
搜索推荐 C语言
指针与数组
指针与数组
49 9
|
1月前
|
算法 Java
双指针在数组遍历中的应用
文章深入探讨了双指针技术在数组遍历中的应用,通过实战例子详细解释了快慢指针和首尾指针的不同用法,并提供了解决LeetCode相关问题的Java代码实现。
|
28天前
|
存储 程序员 C语言
指针的高级应用:指针数组、数组指针、函数指针等。
指针的高级应用:指针数组、数组指针、函数指针等。
60 0
|
2月前
|
运维
开发与运维数组问题之指针的加减法意义如何解决
开发与运维数组问题之指针的加减法意义如何解决
36 7
|
2月前
|
C++ 索引 运维
开发与运维数组问题之在C++中数组名和指针是等价如何解决
开发与运维数组问题之在C++中数组名和指针是等价如何解决
21 6
|
2月前
|
存储 C++ 运维
开发与运维数组问题之指针的定义语法如何解决
开发与运维数组问题之指针的定义语法如何解决
26 6
|
3月前
|
Java 程序员 Linux
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
36 0
|
3月前
|
存储 C语言
C语言中的多级指针、指针数组与数组指针
C语言中的多级指针、指针数组与数组指针
|
3月前
|
C语言
指针进阶(C语言终)
指针进阶(C语言终)
|
11天前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。