数组指针:即指向数组的指针(也称行指针)。

指针数组:即用于存储指针的数组,也就是数组元素都是指针。

数组指针示例:

int (*p)[n];

()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n。执行p+1时,p要跨过n个整型数据的长度。

指针数组示例:

int *p[n];

[]优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。

演示代码:

#include <iostream>using namespace std;int main()
{
int c[4]={1,2,3,4};
int *a[4]; //指针数组
int (*b)[4]; //数组指针
b=&c;
//将数组c中元素赋给数组a
for(int i=0;i<4;i++)
{
a[i]=&c[i];
}
//输出结果
cout<<*a[1]<<endl; //输出2
cout<<(*b)[2]<<endl; //输出3
return 0;
}

注意:定义了数组指针,该指针指向这个数组的首地址,必须给指针指定一个地址,容易犯的错得就是,不给b地址,直接用(*b)[i]=c[i]给数组b中元素赋值,这时数组指针不知道指向哪里,调试时可能没错,但运行时肯定出现问题,使用指针时要注意这个问题。但为什么a就不用给他地址呢,a的元素是指针,实际上for循环内已经给数组a中元素指定地址了。但若在for循环内写*a[i]=c[i],这同样会出问题。总之一句话,定义了指针一定要知道指针指向哪里,不然要悲剧。

转载于:https://www.cnblogs.com/fengty90/p/3768849.html

指针数组 与 数组指针 的分析相关推荐

  1. 1、打印二进制机器码,程序内存分析,大端序小端序,指针数组,数组指针,数组的三种访问方式,typedef,#if-0-#endif,求数组大小,括号表达式

     1.打印二进制机器码(分别表示32位的和64位的) #include <stdio.h> /*按照8位的长度打印一个数值*/ void dis8bit(char val) { int ...

  2. 从编译器角度分析C语言中数组名和指针的区别

    从编译器角度分析C语言中数组名和指针的区别 数组名和指针是两个往往很容易让人们混淆的概念,很多人以为数组名就是一个指针,也有很多人知道数组名不同于指针但是仅知道数组名的值不能像指针一样改变. 例如你可 ...

  3. C/C++ 一维数组的传参/一级指针的传参 二维数组的传参/二级指针的传参 三维数组的传参/三级指针的传参 方法总结分析终极篇

    序 最近复习c/c++数组的传参,发现了一些问题,下面是一些总结和思考 正文 一维数组的传参/一级指针的传参/普通指针 在理解指针的基础上,一维数组的指针传递很简单,我们知道数组的数组名就是这个数组首 ...

  4. C语言笔记 第三十五课 数组参数和指针参数分析

    第三十五课 数组参数和指针参数分析 思考:为什么C语言中的数组参数会退化为指针? 退化的意义 C语言中只会以值拷贝的方式传输参数 当向函数传递数组时:(错误的,设计当初的思路) 将整个数组拷贝一份传入 ...

  5. extern数组与extern指针

    数组名代表了存放该数组的那块内存,它是这块内存的首地址.这就说明了数组名 是一个地址,而且,还是一个不可修改的常量,完整地说,就是一个地址常量.数组名 跟枚举常量一样,都属于符号常量.数组名 这个符号 ...

  6. C语言学习笔记--预编译/宏定义/数组/参数传递/函数指针

    目录 预编译 值传递.指针传递.引用传递 数组 typedef 函数指针 预编译 预编译又叫预处理.预编译不是编译,而是编译前的处理.这个操作是在正式编译之前由系统自动完成的.#define 和 #i ...

  7. 指针数组,数组指针,指针函数,函数指针,二级指针详解

    先看个简单的:char *p,这定义了一个指针,指针指向的数据类型是字符型,char  *(p)定义了一个指针P: char *p[4], 为指针数组,由于[]的优先级高于*,所以p先和[]结合,p[ ...

  8. 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  9. C++指针数组、数组指针、数组名及二维数组技巧汇总

    本文较为详细的分析了关于理解C++指针数组,数组指针,数组名,二维数组的一些技巧.是比较重要的概念,相信对于大家的C++程序设计有一定的帮助作用. 一.关于数组名 假设有数组: int a[3] = ...

最新文章

  1. Science | 机器学习揭示了构建人造蛋白质的秘诀
  2. 采购组织0001不对工厂1000负责
  3. boost::fusion::as_set用法的测试程序
  4. python转go感觉难_读《我为什么从python转向go》的一些感受
  5. C#中is vs as 1
  6. 【gateway系列】手把手教你gateway整合nacos注册中心
  7. python 模型 欺诈概率_python信用卡欺诈模型,最大似然参数设置/混淆矩阵
  8. java三星题之_JAVA三星题之playing a TicTacToe game
  9. SpringMVC Ⅰ
  10. liunux 查看系统参数、网络参数的命令
  11. java文本框背景_Java 添加文本框到PPT幻灯片过程解析
  12. c语言计算二元一次不定方程,二元一次不定方程的解
  13. 西安,已达 100 %。
  14. 基于java使用jsoup爬取网站投票数据的demo
  15. 程序员必备的沟通技巧
  16. 2023天津工业大学计算机考研信息汇总
  17. HTML小游戏19 —— html5版开心斗地主小游戏(附完整源码)
  18. VS2019创建和使用静态库(.lib文件)
  19. Fluent Meshing分离边界层网格
  20. 异化之地服务器维护要多久,异化之地3月26日停服维护公告_异化之地3月26日更新了什么_玩游戏网...

热门文章

  1. 蓝书4.1-4.4 树状数组、RMQ问题、线段树、倍增求LCA
  2. Python学习---Python安装与基础1205
  3. win10 1709电脑无法显示局域网共享
  4. NPOI的excel导出1
  5. from 表单回车自动提交
  6. 懒加载中进行字典转模型
  7. 20181102 T1 相遇
  8. Console控制台的正确打开方式
  9. python_day3作业
  10. 手机网页 右边的空白区