数组元素之间的地址是相连的;

变量地址绝对不是相连的,如果找到规律那也只是一个偶然的,不是必然的;

1. 指针变量和一位数组

下面对指针数组进行分析,index(小标是从0开始),array数组是int类型,每一个元素占据4个字节。

#includeint main(void){  int a[5] = {10,20,30,40,50};  int *p;  printf("a[0]的地址:%d\n",&a[0]);   // 取地址  printf("a[1]的地址:%d\n",&a[1]);  printf("a[2]的地址:%d\n",&a[2]);  printf("a[3]的地址:%d\n",&a[3]);  printf("a[4]的地址:%d\n",&a[4]);printf("--------------------------------\n");  printf("a的地址:%d\n",a);    // 数组名 a = a[0]  printf("a+1的地址:%d\n",a+1);   // 相当于 a[1] 的地址  printf("a+2的地址:%d\n",a+2);     printf("a+3的地址:%d\n",a+3);  printf("a+4的地址:%d\n",a+4);  return 0;}

2. 指针变量引用一维数组

#includeint main(void){  int a[5] = {10,20,30,40,50};  int *p;  printf("&a[2]+2的地址:%d\n",&a[2]+2);  // 等于 &a[4] // *a[2] 这样取数组的值会报错的  printf("*(a+2)的值:%d\n",*(a+2)); // a[2] = 30printf("*a+3的值:%d\n",*a+3); // 13 (*星号的优先级高于 + 先算 *a的值再加3)  printf("--------------------------------\n");p = a; // p = &a;printf("p的地址:%d\n",p);  printf("p+1的地址:%d\n",p+1);  printf("p+2的地址:%d\n",p+2);  printf("p+3的地址:%d\n",p+3);  printf("p+4的地址:%d\n",p+4);  printf("--------------------------------\n");printf("*p的值:%d\n",*p);  printf("*(p+1)的值:%d\n",*(p+1));  printf("*(p+2)的值:%d\n",*(p+2));  printf("*(p+3)的值:%d\n",*(p+3));  printf("*(p+4)的值:%d\n",*(p+4));printf("--------------------------------\n");p = &a[2];  printf("p的地址:%d\n",p);   // &a[2]  printf("p+1的地址:%d\n",p+1);  // &a[3]  printf("p+2的地址:%d\n",p+2);  // &a[4]  printf("p+3的地址:%d\n",p+3);  // &a[5]  野地址  printf("p+4的地址:%d\n",p+4);  // &a[6]  野地址printf("--------------------------------\n");
//a = &a[2];  //错误,a代表a[0]是一个常量,赋值只能给一个变量所以会出错,a 必须是一个左值  return 0;}

3. 指针一维数组地址关系

4. 指针一维数组内容关系

声明:

本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

C语言指针变量与一维数组相关推荐

  1. 【c语言】用指针变量输出一维数组中的数据

    #include<stdio.h> void main(){     int i,*m,a[5];     printf("数组:"); //普通方式输出数组的元素   ...

  2. c语言指针变量的定义数组的长度,【C语言更新】指向数组的指针

    文/Edward 前面我们在讲述数组的时候曾经说过,对于数组内部元素的引用方式主要有两种,一种就是使用方括号"[]"的下标索引,另一种就是之前提到过,但是没有细致讲述的指针引用. ...

  3. C语言指针变量可以当做数组吗?

    比如说定义int *w 然后下边就可以用作w[i] 这么对吗? 对的话在什么情况下可以这么使用? 答:可以,但是不准确,因为w这时还是野指针.只有这样 int *w,a[44]; w=a; 然后下边就 ...

  4. C语言指针变量的使用

    C语言指针变量的定义和使用(精华) < 1分钟彻底理解指针的概念C语言指针变量的运算 > C语言中文网推出辅导班啦,包括「C语言辅导班.C++辅导班.算法/数据结构辅导班」,全部都是一对一 ...

  5. (转)字符型指针变量与字符数组的区别

    (1)分配内存 设有定义字符型指针变量与字符数组的语句如下: char *pc ,str[100]; 则系统将为字符数组str分配100个字节的内存单元,用于存放100个字符.而系统只为指针变量pc分 ...

  6. 第十节 字符串指针变量与字符数组的区别(十一)

    用字符数组和字符指针变量都可实现字符串的存储和运算.但是两者是有区别的.在使用时应注意以下几个问题: 1) 字符串指针变量本身是一个变量,用于存放字符串的首地址.而字符串本身是存放在以该首地址为首的一 ...

  7. C语言指针变量的运算

    前言 指针变量也是可以进行运算的,如指针变量对其自身加上某个整数或减去某个整数,这在内存上体现为:相对这个指针向后偏移多少个单位或向前偏移了多少个单位,这里的单位与指针变量的类型有关.在32bit环境 ...

  8. c语言实验报告5数组,c语言实验报告五一维数组.doc

    c语言实验报告五一维数组 <C程序设计>课程实验报告 学院: 班级: 姓名: 学号: 实验设备:计算机1台2011年3月1日 实验项目名称一维数组 掌握一维数组的定义.初始化,以及一维数组 ...

  9. c语言两个指针变量不可以,2.C语言指针变量

    # 2.C语言指针变量 变量的指针就是变量的地址.存放变量地址的变量是指针变量.即在C语言中,允许用一个变量来存放指针,这种变量称为指针变量.因此,一个指针变量的值就是某个变量的地址或称为某变量的指针 ...

最新文章

  1. 2022-2028年中国加密货币交易所市场研究及前瞻分析报告
  2. SAP RETAIL初阶之事务代码MP83 显示一个预测参数文件
  3. java堆与非堆的一些研究_堆和堆傻傻分不清?一文告诉你 Java 集合中「堆」的最佳打开方式...
  4. pip install -r requirement.txt 后 提示No such file or directory: ‘requirements.txt‘
  5. Delphi项目的构成(Files That Make Up a Delphi Project)
  6. MySQL 覆盖索引、最左前缀原则、索引下推
  7. Tarjan缩点简析
  8. CentOS中一些基本的操作记录
  9. Codevs 1506 传话
  10. CSS2.0样式手册_说明_SDK下载chm
  11. Java多线程(一)——多线程实现方法和生命周期
  12. fcbf特征选择python_全自动机器学习:自动特征筛选(B)R语言自动特征工程实现...
  13. 40个令人惊讶的photoshop文字效果教程
  14. Springboot结合ESAPI——配置XSS防御过滤
  15. 信息安全等级保护测评师模拟考试
  16. 七色的寒冷彩虹便冒了出来
  17. 微信小程序中用户登录和登录态维护
  18. 69的人因为穷不谈恋爱,这届年轻人脱单太难了
  19. spring事物配置备份
  20. poi word设置字体背景颜色(也叫底纹)

热门文章

  1. weakreference_Java中WeakReference,SoftReference,PhantomReference和Strong Reference之间的区别...
  2. java 基础包的功能_Java 8的功能基础
  3. JavaFX技巧31:遮罩/剪切/ Alpha通道
  4. Spring项目的按层打包已过时
  5. JDK 9 @不建议使用的注释增强功能
  6. jpa 与非jpa 结合_EasyCriteria –使用JPA标准的简便方法
  7. 教程:正确的SLF4J日志记录用法以及如何检查它
  8. 红帽峰会2015所需的JBoss BPM内容指南
  9. 摆脱困境:将属性值注入配置Bean
  10. Apache Camel 2.14中的更多指标