程序的思考之中的一个个能够检验你指针理解功力的程序

摘要:
我希望结果不会让你吃惊。小程序也可以有很大的智慧#include<iostream>usingspacestd;Intmain(){double*(*a)[3][6];cout<<sizeof<<endl;//4a是一个数组指针,具有4个字节的cout<>sizeof(*a<<end1;//72*a是数组总cout<≤sizeof(**a)<<endl;//24*a是二维数组的第一行。一维数组cout<˂sizeof<˂endl;//4*a是第一个具有double*cout<˂sizeof<˂endl的元素;//8*a是双返回0的类型;}正在查找在另一个程序,我们都知道数组将降级为第一个元素intSum/array指针的地址{intsumofi=0;对于//sizeof(*i)=24{//sizeof(*i)/sizeof sumofi+=(*i[j];}returnsumofi;}IntSum2//数组引用{intsumofi=0;对于//sizeof=24{///sizeof/sizeof sumofi+=i[j];}returnsumofi;}intmain(){intallAges[]={1,2,3,4,5,6};cout˂˂Sum˂˂endl;cout˂˂Sum2˂˂endl;return0;}

希望结果能够不让你大吃一惊哟。小程序也能够大智慧的。


#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;
}


免责声明:文章转载自《程序的思考之中的一个个能够检验你指针理解功力的程序》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇HBase 二次开发 java api和demoSping+ActiveMQ整合下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

OC对象的本质及分类

Object-C的底层都是通过C/C++来实现的,所以OC中的对象也会转化成C/C++中的某一个数据结构, 我们在终端里通过指令 xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m -o main_arm64.cpp 将oc代码转化为c++代码,我们可以看到NSObject的...

代码审查

一、代码审查表 参考博客:c/c++代码审查结对伙伴:何涛代码地址:Coding.net 功能模块名称 将赋值语句转化为四元式  审查人 刘子君  审查日期 2018.4.5  代码名称 四元式实验  代码作者 何涛  文件结构 重要性 审查项 结论 头文件和定义文件的名称是否合理? 是    头文...

数据库(SQLITE3函数总结): sqlite3_open, sqlite3_exec, slite3_close,sqlite3_prepare_v2,sqlite3_column_text,

Sqlite3的确非常好用。小巧、速度快。近期研究它,有一些收获,这里把我对sqlite3的研究列出来,以备忘记。 导入SQLLite library并引入头文件. libsqlite3.dylib本身是个链接,在这里它指向libsqlite3.0.dylib。也就是说在这里你加入libsqlite3.dylib和加入libsqlite3.0.dyl...

C/C++语言结构体中定义另一个结构体指针的经验

本文进行讨论的是,在Linux中,C/C++语言的结构体的使用情况。一般情况下,结构体的使用还是相对比较简单的,它携带的一类物体的某一些属性, 比如 struct person { int age; int height; //... }; 这个结构一携带的就是一个人的两个基本信息,年龄(age)和身高(height),同样你也可以...

指针转换(C# 编程指南)

原文地址:https://msdn.microsoft.com/zh-cn/library/etb4xxec.aspx 下表显示了预定义的隐式指针转换。隐式转换可能在多种情形下发生,包括调用方法时和在赋值语句中。 隐式指针转换 发件人 目标 任何指针类型 void* null 任何指针类型 显式指...

retain、strong、weak、assign区别

1. 假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给(assign)了b。此时a 和b指向同一块内存,请问当a不再需要这块内存,能否直接释放它?答案是否定的,因为a并不知道b是否还在使用这块内存,如果a释放了,那么b在使用这块内存的时候会引起程序crash掉。 2. 了解到1中a...