广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言详细讲解指针数组的用法
  • 910
分享到

C语言详细讲解指针数组的用法

2024-04-02 19:04:59 910人浏览 薄情痞子
摘要

目录1. 指针数组定义方法2. 指针的指针(二级指针)3. 字符串和指针4. 数组指针定义方法数组指针的用法1. 指针数组定义方法 格式: 类型说明符 *数组名[ 元素个数 ] in

1. 指针数组定义方法

格式:

类型说明符 *数组名[ 元素个数 ]

int *p[10]; // 定义了一个整型指针数组p,有10个元素,都是int *类型的变量

指针数组的分类: 同指针类型的分类,见上一篇

大多数情况下,指针数组都用来保存多个字符串。

#include <stdio.h>
int main()
{
    char *name[5] = {"Hello",
                     "Pig",
                     "Pk",
                     "Welcome",
                     "Django"};
    int i;
    for (i = 0; i < 5; i++)
    {
        printf("%s\n", name[i]);
    }
    return 0;
}

2. 指针的指针(二级指针)

指针的指针,即指针的地址

int main()
{
    int a = 100;
    //定义一个一级指针,用于保存变量的地址
    int *p = &a;
    //定义一个二级指针,用于保存一级指针的地址
    int **q = &p;
    printf("a = %d %d %d\n", a, *p, **q);
    printf("&a = %p %p %p\n", &a, p, *q);  // 打印a的地址
    return 0;
}

3. 字符串和指针

字符串的概念:以 ‘\0’ 结尾的若干字符的集合

字符串的存储形式:数组,字符串指针,堆

(1) char string[100] = “I LOVE C” 定义了一个字符数组string用来存放字符串

(2) char *str = “I LOVE C” 定义了一个指针变量str,只能存放字符地址编号,所以说I LOVE C这个字符串中的字符不能存放在str指针变量中。str只是存放了字符 I 的地址编号,I LOVE C 存放在文字常量区

(3)char str=(char)malloc(10*sizeof(char)); 动态申请了10个字节的存储空间,首地址给str赋值。strcpy(str,“I LOVE C!”);  将字符串拷贝到str指向的内存里。 《strcpy()函数详解》

用的最多的是(1)和(3)

总结

字符数组:在内存(栈、静态全局区)中开辟了一段空间存放字符串

字符串指针:在文字常量区开辟了一段空间存放字符串,将字符串的首地址赋给str

堆:使用malloc函数在堆区申请空间,将字符串拷贝到堆区

4. 数组指针

本身是一个指针,指向一个数组,加1跳一个数组,即指向下一个数组。

数组指针的作用就是可以保存二维数组的首地址。

定义方法

格式:

指向的数组的类型 (*指针变量名)[ 指向的数组的元素个数 ]

int (*p)[5]; //定义了一个数组指针变量p,p指向的是整型的有5个元素的数组

p+1 往下指5个整型,跳过一个有5个整型元素的数组。

#include <stdio.h>
// 定义数组指针
void test1()
{
    int a[3][5]; // 定义一个3行5列的数组
    int(*p)[5];  // 定义了一个数组指针变量p,p+1跳一个有5个元素的整型数组
    printf("a=%p\n", a);      // 第0行的行地址
    printf("a+1=%p\n", a + 1); // 第1行的行地址,a和a+1差20个字节
    p = a;
    printf("p=%p\n", p);
    printf("p+1=%p\n", p + 1);
    return;
}
int main()
{
    test1();
    return 0;
}

数组指针的用法

#include <stdio.h>
// 数组指针的用法:可以将二维数组的首地址传到另一个函数里面,此时函数的形参需要定义为数组指针
void func(int (*p)[5], int x, int y)
{
    p[x][y] = 101;
}
void test2()
{
    int i, j;
    int a[3][5];
    func(a, 0, 1);
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 5; j++)
        {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }
}
int main()
{
    test2();
    return 0;
}

到此这篇关于C语言详细讲解指针数组的用法的文章就介绍到这了,更多相关C语言指针数组内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言详细讲解指针数组的用法

本文链接: https://www.lsjlt.com/news/148310.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言详细讲解指针数组的用法
    目录1. 指针数组定义方法2. 指针的指针(二级指针)3. 字符串和指针4. 数组指针定义方法数组指针的用法1. 指针数组定义方法 格式: 类型说明符 *数组名[ 元素个数 ] in...
    99+
    2022-11-13
  • C语言详细讲解数组参数与指针参数
    目录一、C语言中的数组参数退化为指针的意义二、二维数组参数三、等价关系四、被忽视的知识点五、小结一、C语言中的数组参数退化为指针的意义 C 语言中只会以值拷贝的方式传递参数 当向函数...
    99+
    2022-11-13
  • C语言超详细讲解指向函数的指针
    目录一、函数的指针二、指向函数的指针变量三、调用函数的两种方式四、指向函数的指针的作用五、用指向函数的指针作函数参数(重点)六、为什么要将指向函数的指针变量作为函数的形参(重点)一、...
    99+
    2022-11-13
  • C语言超详细讲解指针的使用
    目录指针概述自身类型指向类型代码例子数值型指针字符型指针单字符字符数组字符串型指针字符数组总结指针概述 C语言中指针也可以认为是一种类型,不同于数值型和字符型的类型。推演过去指针变量...
    99+
    2022-11-13
  • C语言详细讲解多维数组与多维指针
    目录一、指向指针的指针二、二维数组与二维指针三、数组名四、小结一、指向指针的指针 指针的本质是变量 指针会占用一定的内存空间 可以定义指针的指针来保存指针变量的地址值 为什么需要指向...
    99+
    2022-11-13
  • C语言超详细讲解函数指针的运用
    目录前言计算器的例子回调函数转移表前言 前面我们学习了各种各样的指针类型,有些指针可以说是稀奇百怪,特别是函数指针,有些朋友可能觉得,函数指针有些多余,调用函数为什么要用指针调用,直...
    99+
    2022-11-13
  • C语言指针超详细讲解上篇
    目录前言1、指针是什么1.1 指针变量1.2 指针是内存中一个最小单元的编号2、指针和指针类型2.1 指针±类型2.2 指针的解引用2.2.1 int* 类型的解引用2...
    99+
    2022-11-13
  • C语言指针超详细讲解下篇
    目录前言指针运算指针±整数指针-指针指针的关系运算指针和数组二级指针指针数组举例 1举例 2总结前言 本文接着上一篇内容,继续学习指针相关知识点。 指针运算 指针&pl...
    99+
    2022-11-13
  • C语言超详细讲解宏与指针的使用
    目录1、关于define2、初识指针(1)内存(2)示例(3)指针的使用示例(4)指针变量的大小1、关于define define是一个预处理指令,有两种用法,一种是用define定...
    99+
    2022-11-13
  • c语言的指针数组详解
    指针如何指向数组,并读取数组中的元素: #include <stdio.h> int main() { int arr[3] = {1,2,3}; int *p;...
    99+
    2022-11-12
  • C语言的数组指针与函数指针详解
    目录前言函数指针语法数组指针与指针数组总结前言 数组指针和函数指针都是C语言比较难的知识点,尤其是函数指针,并且函数指针在开发中有着巨大的作用。 函数指针语法 定义一个函数指针,并通...
    99+
    2022-11-13
  • C语言超详细讲解指针与结构体
    目录本节目标初识指针1、内存与地址2、变量的地址3、指针变量4、指针的使用5、指针变量的大小初识结构体1、什么是结构体2、结构体的定义3、结构体的使用本节目标 理解内存与地址的相关概...
    99+
    2022-11-13
  • C语言超详细讲解指针的概念与使用
    目录一、指针与一维数组1. 指针与数组基础2. 指针与数组3. 一个思考二、指针与字符串三、指针和二维数组1. 指针数组与数组指针2. 指针数组3. 数组指针一、指针与一维数组 1....
    99+
    2022-11-13
  • C语言指针引用数组案例讲解
    前言:C语言中指针玩的是什么,是内存,要想学好指针的小伙伴们要先对数据在内存中是怎么玩的做一番了解~       当在...
    99+
    2022-11-12
  • C语言例题讲解指针与数组
    目录1.概要复习2.指针与数组笔试题2.1一维数组2.2字符数组2.3字符串数组2.4字符串指针2.5二维数组1.概要复习 本篇的内容主要围绕指针与数组、指针与字符串等之间的关系,以...
    99+
    2022-11-13
  • C语言零基础讲解指针和数组
    目录一、指针和数组分析-上1.数组的本质2.指针的运算3.指针的比较4.小结二、指针与数组分析-下 1.数组的访问方式2.下标形式 VS 指针形式3.a 和 &a ...
    99+
    2022-11-13
  • C语言指针数组案例详解
    指针与数组是 C 语言中很重要的两个概念,它们之间有着密切的关系,利用这种 关系,可以增强处理数组的灵活性,加快运行速度,本文着重讨论指针与数组之 间的联系及在编程中的应用。 1.指...
    99+
    2022-11-12
  • C语言 指针数组进阶详解
    目录指针与数组中的sizeof与strlensizeofstrlen数组名1、一维数组整型数组字符数组指针数组2、二维数组指针笔试题 笔试题1笔试题2笔试题3笔试题4笔试题...
    99+
    2022-11-13
  • C语言数组超详细讲解上
    目录前言1、一维数组的创建和初始化1.1 一维数组的创建1.2 一维数组的初始化1.3 一维数组的使用1.4 一维数组在内存中的存储2、二维数组的创建和初始化2.1 二维数组的创建2...
    99+
    2022-11-13
  • C语言数组全面详细讲解
    目录1.基础知识2.数组的分类2.1按元素类型分类2.2按维数分类3.数组定义和初始化3.1 一维数组3.2 二维数组4.数组元素的引用方法5.字符数组的定义1.基础知识 C语言中使...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作