程序的思考之一个可以检验你指针理解功力的程序

希望结果可以不让你大吃一惊哟!小程序也可以大智慧的!

#include<iostream>
using namespace std;

int main()
{
double* (*a)[3][6];
cout<<sizeof(a)<<endl; //4      a就是一个数组指针32位下是4字节
cout<<sizeof(*a)<<endl; // 72   *a就是数组整体
cout<<sizeof(**a)<<endl; // 24  **a就是二维数组的第一行这个一维数组
cout<<sizeof(***a)<<endl; // 4  ***a就是第一个元素里面是double*
cout<<sizeof(****a)<<endl; // 8 ****a就是double这个类型
	return 0;
}

再看一个程序

我们都知道数组当形参的时候会降级为首元素的地址

int Sum(int (*i)[6])//数组指针
{
	int sumofi = 0;
for(int j = 0; j < sizeof(*i)/sizeof(**i); j++) //sizeof(*i) = 24
{                   //sizeof(*i)/sizeof(int)
sumofi += (*i)[j];
}
return sumofi;
}

int Sum2(int (&i)[6])//数组引用
{
	int sumofi = 0;
	for(int j = 0; j < sizeof(i)/sizeof(*i); j++) //sizeof(i) = 24
	{              ////sizeof(i)/sizeof(int)
		sumofi += i[j];
	}
	return sumofi;
}

int main()
{
int allAges[] = {1, 2, 3, 4, 5, 6};
cout<<Sum(&allAges)<<endl;
cout<<Sum2(allAges)<<endl;
return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 01:15:57

程序的思考之一个可以检验你指针理解功力的程序的相关文章

对两个奇葩的C语言程序的思考

原文章的连接为:http://www.cnblogs.com/jacksu-tencent/default.html?page=2 1. 第一个程序如下: #include <stdio.h> #include <stdlib.h> void main(int i) { printf("%d\n", i); (&main + (&exit - &main)*(i/1000))(i+1); } 这里面涉及到对函数指针,递归,C程序规范的考察

轻松学霸 (程序员思考方式)——1 十种有效的学习方法

好方法,高效率.特别推荐下列十大学习方法 1.目标学习法 把一个伟大的目标,拆分成一个个小目标,再把小目标分成各个步骤.按步骤当学霸.就像程序中只有0和1一样.so easy. 目标拆分还有一个好处,可以多任务并行处理.如在路途中,不能看书,那就听书. a.目标是什么?一定要明确,有标准. b.此时时刻做到哪一步了? c.是否完成? 2.问题学习法 带着问题去看书,有利于集中注意力,目的明确.也会感兴趣.当您真正找到问题答案时,您会发现要找的东西很少,学到的更多.不要被问题吓倒,解决问题的过程就

程序员幽默:66条让你笑爆肚皮的程序员段子

1.程序猿最烦两件事,第一件事是别人要他给自己的代码写文档,第二件呢?是别人的程序没有留下文档. 2.程序猿的读书历程:x 语言入门 —> x 语言应用实践 —> x 语言高阶编程 —> x 语言的科学与艺术 —> 编程之美 —> 编程之道 —> 编程之禅—> 颈椎病康复指南. 3.还没上大学的时候,高三暑假,跑到家那边的图书城想买传说中的C++的书,然后看到一本C#,我一看,嘿,这个++还写得挺艺术的,重叠起来了,于是把C#买了回来…… 4.问:程序猿最讨厌康熙

深入理解计算机系统之程序的机器级表示部分学习笔记

不论我们是在用C语言还是用JAVA或是其他的语言编程时,我们会被屏蔽了程序的机器级的实现.机器语言不需要被编译,可以直接被CPU执行,其执行速度十分  快.但是机器语言的读写性与移植性较高级语言低.高级语言被编译后便成为了汇编语言,汇编语言十分接近机器语言.之后汇编代码会转化为机器语言.虽然现代  的编译器能帮助我们将高级语言转化为汇编语言,解决了不少问题,但是对于一个严谨的程序员来说,需要做到能够阅读和理解汇编语言.我们主要围绕Intel来讲  解. 一  Intel处理器的历史演变 Inte

PB程序“无法启动此程序,因为计算机中丢失PBvm90.dll。尝试重新安装该程序以解决此问题”的解决方法

因为有计算机自考科目,要求使用PB程序做一个管理系统.昨天刚安装好了PB程序,今天使用的时候,当我打开一个PB程序时,出现了"无法启动此程序,因为计算机中丢失PBvm90.dll.尝试重新安装该程序以解决此问题"的提示,如图: 如果这个时候,真的重新安装该程序的话,估计安装多少遍都无济于事.因此,我上网查阅资料,找到了该问题的解决方法. 解决思路: 其实装完PB环境后,是有这个动态库的.我的系统是win8.1 64位的,装完PB后去c盘找了这个动态库,它的位置是这个C:\Program

项目 Web 的 NuGet 程序包还原失败: 找不到“1.0.0”版本的程序包“Microsoft.Net.Compilers”。。 0

项目   Web 的 NuGet 程序包还原失败: 找不到“1.0.0”版本的程序包“Microsoft.Net.Compilers”.. 0 使用vs的NutGet包管理器时,另一台电脑从svn下载代码后出现的错误,修改包管理器的源为 http://www.nuget.org/api/v2/ .重试后成功

深度理解微信小程序的思想

这篇文章不涉及小程序技术方面得问题,只讨论小程序的核心问题. 探讨一个问题最好的方法是问"为什么",这篇文章主要思路是通过回答以下几个问题来探讨微信小程序的"思想". 为什么微信要开发微信小程序? 微信开发小程序的一个目的据说是打通线上与线下的联系,因为微信目前的月活跃用户数量已经达到了8亿  ,但是除去微信支付,其他功能与线下几乎没有联系,所以微信希望能利用一个功能将微信的影响力扩展到线下,所以小程序就出来了.其次,很多人开玩笑说微信的目标是手机上的另一个操作系统

我看小程序系列文章:1 不一样的角度 解读微信小程序

大家好,我是Beta007. 最近一直在研究小程序,会在这里整理出一系列的文章,和大家交流. 第一篇文章首发在了知乎专栏:小楼昨夜又秋风:https://zhuanlan.zhihu.com/p/22891188 知乎ID:七月在夏天  (头像是只喵~) 不一样的角度 解读微信小程序 七月在夏天· 2 天前 前段时间看完了雨果奖中短篇获奖小说<北京折叠>.很有意思的是,张小龙最近也要把应用折叠到微信里,这些应用被他称为:小程序. 含着金钥匙的小程序,还未展现全貌,就已经成了开发界的头条大事儿.

软件工程第三个程序:“WC项目” —— 文件信息统计(Word Count ) 命令行程序

软件工程第三个程序:“WC项目” —— 文件信息统计(Word Count ) 命令行程序 格式:wc.exe [parameter][filename] 在[parameter]中,用户通过输入参数与程序交互,需实现的功能如下: 1.基本功能 支持 -c 统计文件字符数支持 -w 统计文件单词数支持 -l 统计文件总行数 2.拓展功能 支持 -a 返回高级选项(代码行 空行 注释行)支持 -s 递归处理符合条件的文件 3.高级功能 支持 -x 程序以图形界面与用户交互 [filename] 是