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

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

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

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

  • 函数指针

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

下篇将介绍:

回调函数
相关文章
|
4天前
|
C语言
指针进阶(C语言终)
指针进阶(C语言终)
|
4天前
|
C语言
指针进阶(回调函数)(C语言)
指针进阶(回调函数)(C语言)
|
4天前
|
存储 C语言 C++
指针进阶(函数指针)(C语言)
指针进阶(函数指针)(C语言)
|
4天前
|
编译器 C语言
指针进阶(数组指针 )(C语言)
指针进阶(数组指针 )(C语言)
|
6天前
|
C语言
【C语言】:详解函数指针变量,函数指针数组及转移表
【C语言】:详解函数指针变量,函数指针数组及转移表
13 2
|
3天前
|
Java 程序员 Linux
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
10 0
|
3天前
|
存储 C语言
C语言中的多级指针、指针数组与数组指针
C语言中的多级指针、指针数组与数组指针
6 0
|
3天前
|
存储 C语言
C语言数组指针详解与应用
C语言数组指针详解与应用
10 0
|
7天前
|
存储 C语言
C语言的函数返回值和指针
C|函数返回值(区分各类值)和指针(区分各类存储空间)的细节
|
9天前
|
C语言
C语言----深入理解指针(5)(一)
C语言----深入理解指针(5)
14 2