/*
Name: 对二维数组使用指针进行操作的探索
Copyright:
Author: lingr7
Date: 01/12/18 11:55
Description:
*/
#include<stdio.h>
int main() { int a[][] = {{,,},{,,}};
int **p = a;/*这一步,将a存放的地址赋值给了p,这一步是的p与a完全等价*/
int *p2 = p;/*这一步就将a[0][0]的地址确实地存入了p2,
与int *p2 = a;语句完全等价,同时进行了强制转换*/ printf("a[1][2]的值:%d\n", *(p2 + * + ));/*对二维数组访问成功*/
printf("a[1][2]的值:%d\n", *((int*)p + * + ));/*访问成功*/
printf("a[1][2]的值:%d\n", *((int*)a + * + ));/*对二维数组访问成功*/
/* 既然(int*)a与 *(int(*)[3])a在这里是等价的,那么还是(int*)a更方便一点*/
printf("a[1][0]的值:%d\n", *(*(int(*)[])a+*+));/*访问成功*/
printf("a[1][0]的值:%d\n", *(*(int(*)[])p+*+));/*访问成功*/
/*以上能够正确的访问二维数组*/ printf("a[1][0]的值:%d\n", *(a+*+));/*这里因为a的地址的多重性而混乱,必须强制转换确认
a是一个指向整型元素的指针,才能正确使用a里存放的地址*/
printf("a[1][0]的值:%d\n", *(*(int(*)[])p+*+));/*p与a的效果完全一样*/
/*printf("a[1][0]的值:%d\n", *(*(int*)p+1*3+0));/*编译不通过*/
printf("a[1][0]的值:%d\n", *((int*)*p+*+));/*操作失败*/
printf("a[1][0]的值:%d\n", *((int*)(*p)+*+));/*操作失败*/
printf("a[1][0]的值:%d\n", *(p+));
printf("*p应该是一个指向指针的指针:%d", *p);
printf("\n");
printf("a的地址:%d\n", a);
printf("a[0][0]的地址:%d\n",&a[][]);
printf("a[0][0]的值:%d\n", *p);
printf("a[1][2]的值:%d\n", *(p + * + ));/*这里和int *p = a的结果不同*/
printf("a[1][2]的值:%d\n", *p + * + );/*21,这里应该是5才对啊
这里跟对二维数组的操作无关,因为*p指向一个指向整型的指针,可是*P移位根本不确定,*P移位后指向什么东西*/
/*printf("a[1][2]的值:%d\n", *(*p + 1*3 + 2));/*存储地址为21的东西没办法输出*/
printf("a[0][0]的值:%d\n", *(p+));
printf("p+1之前:%d\n",p);
p++;
printf("p+1之后:%d\n",p);/*地址+1,实际上是10进制加8了,这是因为p是一个指针,+1之后是下一个
而p指向一个指针,对p移位所以是下一个存储地址长度,与p指向的那个指针指向的类型无关*/ }

对二维数组使用指针进行操作的探索(C语言)的更多相关文章

  1. C指针 指针和数组 二维数组的指针 指针应用

    直接到变量名标识的存储单元中读取变量的值--直接寻址 通过其他变量间接找到变量的地址读取变量的值--间接寻址 指针变量存放地址 显示变量的地址 指针变量使用前必须初始化,若不知指向哪,可先指向NULL ...

  2. 程序员之--C语言细节13(二维数组和指针,&amp;*a[i][0]的理解,数组1[e]和e[1]非常可能你没见过)

    主要内容:二维数组和指针.&*a[i][0]的理解.数组1[e]和e[1] #include <stdio.h> #define NUM_ROWS 10 #define NUM_C ...

  3. C语言教学--二维数组和指针的理解

    对于初学者对二维数组和指针的理解很模糊, 或者感觉很难理解, 其实我们和生活联系起来, 这一切都会变得清晰透彻. 我们用理解一维数组的思想来理解二维数组, 对于一维数组,每个箱子里存放的是具体的苹果, ...

  4. 关于c语言二维数组与指针的个人理解及处理办法。

    相信大家在学习C语言时,对一维数组和指针的理解应该是自信的,但是,我在学习过程中,看到网上一些博文,发现即便是参加工作的一些专业编程人员,突然碰到二维数组和指针的问题时,也可能会遇到难以处理的诡异问题 ...

  5. C++笔记-数组指针/二维数组转换指针

    参考资料: 1. 作者 BensonLaur  :https://www.cnblogs.com/BensonLaur/p/6367077.html 2. https://blog.csdn.net/ ...

  6. C语言 二维数组(指针)动态分配和释放(转)

    C 二维数组(指针)动态分配和释放 先明确下概念: 所谓32位处理器就是一次只能处理32位,也就是4个字节的数据,而64位处理器一次就能处理64位,即8个字节的数据.如果我们将总长128位的指令分别按 ...

  7. c语言编程-----指向二维数组的指针

    c中如何返回一个指向二维数组的指针 #include <stdio.h> #include <stdlib.h> #define COUNT 3 typedef int (*M ...

  8. 二维数组和指针(C语言)

    二维数组和指针 二维数组和指针1.二维数组和数组元素的地址若有以下定义:int *p, a[3][4]; 1)二维数组a由若干个一维数组组成在C语言中定义的二维数组实际上是一个一维数组,这个一维数组的 ...

  9. C/C++——二维数组与指针、指针数组、数组指针(行指针)、二级指针的用法

    本文转载自:https://blog.csdn.net/qq_33573235/article/details/79530792 1. 二维数组和指针 要用指针处理二维数组,首先要解决从存储的角度对二 ...

随机推荐

  1. Navicat for mysql远程连接数据库详解(1130错误解决方法)

    用Navicat for mysql连接数据库测试下连接 如果出现1130错误 错误代码是1130,ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to ...

  2. C# 几种数据类型转换方式

    1.(int)变量名[强制类型转换] 该转换方式主要用于数字类型之间的转换,从int类型向long,float,double,decimal 类型转换可以使用隐式转换,但从long型到int 就需要使 ...

  3. jquery调用asp.net 页面后台的实现代码

    先创建一个aspx页面编写一个客户端控件<input type="button" id="AjaxDemo" value="AjaxDemo&q ...

  4. jQuery 方法 属性

    Attribute:$("p").addClass(css中定义的样式类型); 给某个元素添加样式$("img").attr({src:"test.j ...

  5. 一、 Spring Cloud Eureka ,咱们先跑起来

    一.Spring Cloud 简介 Spring Cloud 是一个基于Spring Boot 实现的微服务架构开发工具.是一个涉及到服务治理.分布式配置管理.负载均衡.服务容错.API网关.消息总线 ...

  6. 浅谈.htaccess文件--避免滥用.htaccess文件

    .htaccess文件提供了一种目录级别的修改配置的方式. NOTE: 如果你拥有修改apache配置文件的权限,那么完全没有必要使用.htaccess文件.使用.htaccess文件会拖慢apach ...

  7. Linux最常用命令实战

    1.改变机器的名称: vim /etc/hostname Master 在文件中修改机器名称为我们想要的名称(相当于域名) 可以通过shutdown -h now 关闭 2.查看当前机器IP: ifc ...

  8. co-dialog弹出框组件-版本v2.0.0

    co-dialog theme 访问git:co-dialog 版本v2.0.0 主题2 coog.app('.theme2').use({ title: 'JUST CHECKING.', mess ...

  9. 为PyCharm添加不同解释器

    正常大家会使用Python官网的安装包,即Python.由于自己尝试了下IronPython,但打开PyCharm查看配置,发现并没有IronPython的解释器,这个需要自己加进去,如图: &quo ...

  10. vue登录权限

    登录:当用户填写完账号和密码后向服务端验证是否正确,验证通过之后,服务端会返回一个token,拿到token之后(我会将这个token存贮到cookie中,保证刷新页面后能记住用户登录状态),前端会根 ...