zoukankan      html  css  js  c++  java
  • 巧记“指针数组”与“数组指针”

    指针数组:存放指针的数组

    char *(week)[7] = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
    

    数组指针:指向数组的指针

    int arr[2][3] = { {1,1,1},{2,2,2} };

    指针数组数组指针在网上有很多很好的文章,但每次看过不久后就又忘掉了,这两个概念非常容易弄混,一不小心就会弄错。所以,在此中总结了几个快速记忆的方法,只为快速区分两者,不涉及更深层次的内容。因为是助记,所以以下内容可能不太准确,只为记忆方便,建议理解其概念后阅读。

    分析:

    数组指针

    • 数组在前,强调了数组,表示可以存放二维数组。而二维数组中,有多个一维数组,可以理解为,多个指针。
    • 总结:存放二维数组,二维数组中有多个指针



    指针数组

    • 指针在前,强调指针,表示可以存放指针(eg:字符串)。多个这样的指针组成数组
    • 总结:存放指针(或者理解为存放字符串),多个指针形成数组



    快速辨别

    利用指针与数组的特征快速辨别,数组 int arr[] 特征为数组名旁边的括号,指针 char *p 特征为指针名前的 * 符号

    数组指针
    char (*p)[9] 这种形式,
    1.数组角度:有两个括号,理解为两个数组,强调了数组,所以是数组+指针
    2.指针角度:括号把 * 括在里面,从整体上看没有指针的特征“ * ” ,所以是数组+指针

    指针数组
    char *p[9] 这种形式
    1.数组角度:一个括号,没有强调数组,所以是指针+数组
    2.指针角度:从整体上看,有一个 * ,所以是指针+数组

    总结:只看p,
    p有*是指针--指针数组   char *p[]
    p有()是数组--数组指针  char (*p)[]

    实例:

    int main()
    {
        //指针数组测试    存放指针,形成数组
    	const char* (week)[7] = { "Monday","Tuesday",
    		"Wednesday","Thursday","Friday","Saturday","Sunday" };
    	for (int i = 0; i < 7; i++)
    	{
    		printf(*(week + i));
    		puts("");
    	}
    
        //数组指针测试    存放二维数组
    	int arr[2][3] = { {1,1,1},{2,2,2} };
    	int(*p)[3] = arr;
    	for (int i = 0; i < 6; i++)
    	{
    		printf("%d 
    ", (*p)[i]);
    	}
    
    }

    输出为:

    //指针数组
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    Sunday
    //数组指针
    1
    1
    1
    2
    2
    2
  • 相关阅读:
    一道编程题: 在1~n之间选择若干个数,使其和为m
    关于raft算法
    程序员算法基础——动态规划
    c++中两个类互相引用的问题
    c++ 之模板进阶
    jmeter分布式操作-远程启动功能探索
    linux下安装不同版本的jdk
    Jmeter插件监控服务器性能
    测试开发面试-技术持续累积
    python:Jpype安装和使用
  • 原文地址:https://www.cnblogs.com/TaoR320/p/12680189.html
Copyright © 2011-2022 走看看