在本文中,我们主要介绍指针二维的内容,自我感觉有个不错的建议和大家分享下

#include <stdio.h>

extern void print_double_point_address_value_p(int **p, int *p1);

void main(){

int array[3][2] = {10,11,12,13,14,15};

int *array3[2];

int **pa3 =&array3[0];

//int **dp = array;// 这种写法错在哪里?

//int **dp = &array[0];// 这种写法错在哪里?

int *dp1 = array[0];

int **dp = &dp1;   这样就可以用二重指针拜访二维数组内的元素了

printf("二维数组的首地址:               array = %p, &array[0] = %p \n", array, &array[0]);

printf("二维数组的首地址的指向的地址:  *array = %p,  array[0] = %p \n", *array, array[0]);

printf("[0][0] 对应的值:              **array = %d, *array[0] = %d \n", **array, *array[0]);

printf("\n");

printf("test:                          *array = %d, &array[0] = %d \n", array, &array[0]);

printf("test   :                          dp1 = %d,        dp = %d \n", dp1, dp);

int i = 0, j = 0;

for(i=0;i<3;i++){

for(j=0;j<2;j++){

printf("address array = %p \n", &array[i][j]);

}

}

printf("\n");

for(i=0;i<3;i++){

for(j=0;j<2;j++){

printf("value array = %d, \n", array[i][j]);

}

}

printf("\n");

print_double_point_address_value_p(dp,dp1);

}

每日一道理
毅力,是千里大堤一沙一石的凝聚,一点点地累积,才有前不见头后不见尾的壮丽;毅力,是春蚕吐丝一缕一缕的环绕,一丝丝地坚持,才有破茧而出重见光明的辉煌; 毅力,是远航的船的帆,有了帆,船才可以到达成功的彼岸。

extern void print_double_point_address_value_p(int **p,  int *p1){//两种拜访方法

int i = 0, j = 0;

for(i=0;i<3;i++){

for(j=0;j<2;j++){

printf("p = %p, p1 = %p, \n", (*p+i*2)+j, (p1+i*2+j));

}

}

printf("\n");

//int[][]分配在连续空间里,所以可用一个for循环,遍历全部元素

int* temp = p1;

for(i=0;i<6;i++){

printf("p = %d,  \n", *temp++);

//    printf("p = %d,  \n", *(temp++));// 和*temp++ 表现的一样,是指针的挪动

//    printf("p = %d,  \n", (*temp)++);//temp指向的值自增

}

}

编译这个程序,有两处warning,

main.c: In function ‘main’:
main.c:21: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘int (*)[2]’
main.c:21: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘int (*)[2]’
main.c:22: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘int *’
main.c:22: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘int **’

由正告可知,array 和&array[0]  是int(*)[2] 型的指针  和int** 型的指针直接确定不能赋值,所以

//int **dp = array; //int **dp = &array[0];  这两种写法都是不对的,

如果有上面的两种赋值,编译时,指针匹配,不会出错 ,运行时,有时候会出现段错误。

文章结束给大家分享下程序员的一些笑话语录: 火车
一个年轻的程序员和一个项目经理登上了一列在山里行驶的火车,他们发现 列车上几乎都坐满了,只有两个在一起的空位,这个空位的对面是一个老奶 奶和一个年轻漂亮的姑娘。两个上前坐了下来。程序员和那个姑娘他们比较 暧昧地相互看对方。这时,火车进入山洞,车厢里一片漆黑。此时,只听见 一个亲嘴的声音,随后就听到一个响亮的巴掌声。很快火车出了山洞,他们 四个人都不说话。
那个老奶奶在喃喃道, “这个年轻小伙怎么这么无礼, 不过我很高兴我的孙女 扇了一个巴掌”。
项目经理在想,“没想到这个程序员居然这么大胆,敢去亲那姑娘,只可惜那 姑娘打错了人,居然给打了我。”
漂亮的姑娘想,“他亲了我真好,希望我的祖母没有打疼他”。
程序员坐在那里露出了笑容, “生活真好啊。 这一辈子能有几次机会可以在亲 一个美女的同时打项目经理一巴掌啊”

--------------------------------- 原创文章 By
指针和二维
---------------------------------

转载于:https://www.cnblogs.com/xinyuyuanm/archive/2013/05/29/3106815.html

指针二维二维数组和二重指针 的疑问 二维数组名为什么不能直接赋值给二重指针...相关推荐

  1. 【C 语言】数组 ( 验证二维数组内存是线性的 | 打印二维数组 | 以一维数组方式打印二维数组 | 打印二维数组值和地址 )

    文章目录 一.验证二维数组内存是线性的 1.打印二维数组 2.以一维数组方式打印二维数组 3.打印二维数组值和地址 二.完整代码示例 一.验证二维数组内存是线性的 验证二维数组内存是线性的 : 验证方 ...

  2. 向函数传递一维数组和已知大小的二维数组

    一维数组 在C语言中,向函数传递参数只有一种形式--值传递.不管是传递一个整型变量,还是传递一个指针,函数得到的都只是实参的拷贝值. 先定义一个一维整型数组: int a[] = { 0, 1, 2, ...

  3. go 声明二维数组_一篇文章了解Go语言中数组Arrays的使用内幕

    概述 与其他编程语言类似,Go语言也有数组array.Go语言中,数组的行为和其他语言没有什么不同.Go语言中还有一个叫做切片slice的东西,它就像是对数组的引用.在本文中,我们将只研究数组. 定义 ...

  4. 【C语言】数组的基本知识详细讲解(一维数组、二维数组、越界、存储.....

    接着上次的操作符的详解,让我们来简单了解C语言里的数组. 目录 一维数组的创建和初始化 一维数组的使用 一维数组的存储 二维数组的创建与初始化 二维数组的存储 数组的越界 总结 一维数组的创建和初始化 ...

  5. Python使用numpy函数vsplit垂直(行角度)拆分numpy数组(返回拆分后的numpy数组列表)实战:垂直拆分二维numpy数组、split函数垂直拆分二维numpy数组

    Python使用numpy函数vsplit垂直(行角度)拆分numpy数组(返回拆分后的numpy数组列表)实战:垂直拆分二维numpy数组.split函数垂直拆分二维numpy数组 目录

  6. python 空数组_【python三级】二维数组的表示

    二维数据:由多个一维数据构成,是一维数据的组合形式. 表格就是典型的二维数据,其中表头是二维数组的一部分. 数组的操作: 二维数组本质上是以数组作为数组元素的数组,类型说明符,数组名,[常量表达式], ...

  7. php 二维数组字段合并,PHP将二维数组某一个字段相同的数组合并起来的方法,二维数组数组_PHP教程...

    PHP将二维数组某一个字段相同的数组合并起来的方法,二维数组数组 本文实例讲述了PHP将二维数组某一个字段相同的数组合并起来的方法.分享给大家供大家参考,具体如下: 例子: array(3) { [0 ...

  8. php 去除二维数组中的包含某一个值的数组

    今天写程序,遇到一个的问题. 我想把一个二维数组中的包含某一个值的数组去掉,并重新生成索引下标 例如: $all_zone=array(array("id"=>"R ...

  9. Java黑皮书课后题第8章:*8.27(列排序)用下面的方法实现一个二维数组中的列排序。返回新数组,且原数组保持不变。编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵

    *8.27(列排序)用下面的方法实现一个二维数组中的列排序.返回新数组,且原数组保持不变.编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵 题目 题目描述与运行示例 破 ...

  10. Java黑皮书课后题第8章:*8.26(行排序)用下面的方法实现一个二维数组中的行排序。返回新数组,且原数组保持不变。编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵

    *8.26(行排序)用下面的方法实现一个二维数组中的行排序.返回新数组,且原数组保持不变.编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵 题目 题目描述与运行示例 破 ...

最新文章

  1. linux redis 设置日志,linux上redis怎么动态看日志
  2. 转投AI?英国这所大学决定裁掉数学系,激怒了菲尔兹奖得主
  3. Python中将dict转换为kwargs
  4. pandas教程:pandas主要功能详解
  5. Java黑皮书课后题第10章:**10.9(Course类)如下改写Course类
  6. 使用Eclipse 创建 搭建SpringBoot项目
  7. Linux安全驱动模块,【漏洞预警】CVE-2017-2636:linux 内核n_hdlc驱动模块 本地提权漏洞...
  8. python scapy sniffer停止抓包_如果没有收到数据包,如何告诉scapy sniff()停止?
  9. 【Python】Python3.7.3 - Python内置函数
  10. postgreSQL源码分析——索引的建立与使用——GIST索引(1)
  11. 剑指Offer之二叉树中的和为某一路径的值
  12. [转帖]无法将临时对象绑定到非常量引用
  13. 【解决方案修复谷歌翻译 Windows、macOS】谷歌翻译退出了中国市场不能用了
  14. 被远程之后,键盘失灵问题
  15. 微信图片怎么添加竖排文字_微信图文排版怎么在图片上加文字?
  16. 英语语法基础篇-书写规则
  17. GoDaddy域名过户PUSH攻略
  18. python时间戳datetime取出年、月、日、时
  19. 你还在问我Bean的生命周期?带你看看一个Spring Bean从诞生到逝去的九次人生转折!
  20. Coding and Paper Letter(二十八)

热门文章

  1. Linux学习笔记(4)
  2. Keras版的GCN代码学习
  3. wordnet的特点
  4. 使用scrapy-redis构建简单的分布式爬虫
  5. 单独学java_自学Java的几大误区是什么
  6. 为什么使用事务?如何实现声明式事务?
  7. 为什么使用多态?实现多态的有哪些方式?
  8. Hyperledger Fabric教程(10)-- peer命令-链码chaincode
  9. 判断当前环境在微信下,还是企业微信下
  10. matlab axes坐标轴长度,[转载]Matlab 坐标轴(axes),数据提示(data