指针和数组笔试题解析(最详细解析,没有之一)

C语言数组与指针常考笔试题(原题+解析+原码) ⭐️前面的话⭐️ 大家好!对于数组与指针你们会了吗?准备了一些相关的笔试题,测一测你全部会了吗?如果能轻松回答正确,恭喜你,指针与数组已经学得非常扎实了,超过了90%的同龄人! 阅读详情

前言

指针和数组在许多编程场景中经常结合使用,比如通过指针来访问数组的元素、通过指针来遍历数组等。指针和数组的灵活应用可以帮助我们更好地处理和操作数据,提高程序的性能和效率,指针和数组在C语言中具有重要的地位和作用,它们是程序设计中不可或缺的重要概念。本文将详细解析指针和数组相关笔试题!!

1. 一维数组和指针相关笔试题

题目及解析:

int main()
{
	int a[] = { 1,2,3,4 };

	printf("%d\n", sizeof(a));	//数组名单独放在sizeof内部,这里a表示整个数组,计算的是整个数组,为16(4*4)个字节
	printf("%d\n", sizeof(a + 0));//a表示首元素的地址,a+0还是表示首元素地址,是地址就是4/8个字节
	printf("%d\n", sizeof(*a));	//a表示首元素地址,*a表示首元素,大小为4个字节
	printf("%d\n", sizeof(a + 1));//a表示首元素地址,arr+1跳过一个整型长度指向第二个元素(2)的地址,是地址大小就是4/8个字节
	printf("%d\n", sizeof(a[1]));//a[1]取出的是第二个元素2,为int类型,大小为4个字节
	printf("%d\n", sizeof(&a));	//&a取出的是整个数组的地址,但只要是地址,大小都是4/8个字节

	printf("%d\n", sizeof(*&a));	
	//解读一:sizeof(*&a) ---> sizeof(a) ---> 同第一个为16字节
	//解读二:由于我们熟知对整型指针进行解引用得到的是整型;对字符指针进行接引用得到的是一个字符
	//		  这里&a表示数组指针,类型为int (*)[4],对它进行解引用操作得到的是一个数组,即*&a表示整个数组,大小为4*4即16个字节

	printf("%d\n", sizeof(&a + 1));
	//&a取出的是整个数组,&a+1跳过整个数组,指向的是第四个元素4的下一个元素的地址
	//但是地址大小就是4/8个字节

	printf("%d\n", sizeof(&a[0]));//&a[0]取出的是第一个元素1的地址,大小为4/8个字节
	printf("%d\n", sizeof(&a[0] + 1));//&a[0]+1表示取出首元素地址后向后移动一个整型字长,指向第二个元素2的地址,为4/8个字节

	return 0;
}

x64环境下运行结果:
在这里插入图片描述

2. 字符数组和指针相关笔试题

2.1 题型一:

题目及解析:

int main()
{
	char arr[] = { 'a','b','c','d','e','f' };
	
	printf("%d\n", sizeof(arr));//数组名单独放在sizeof内部,这里的arr表示整个数组,计算的是整个数组的大小,单位是字节,总共6个字节
	printf("%d\n", sizeof(arr + 0));//arr表示数组首元素的地址,arr+0还是数组首元素的地址,是地址就是4/8个字节
	printf("%d\n", sizeof(*arr));//arr表示数组首元素的地址,*arr就是首元素,大小1个字节
	printf("%d\n", sizeof(arr[1]));//arr[1]就是第二个元素,大小是1个字节

	printf("%d\n", sizeof(&arr));//&arr是数组的地址,但是数组的地址也是地址,是地址就是4/8

	printf("%d\n", sizeof(&arr + 1));//&arr + 1是跳过整个数组后的地址,是地址就是4/8个字节
	printf("%d\n", sizeof(&arr[0] + 1));//第二个元素的地址,是4/8个字节
	return 0;
}

x64环境下运行结果:
在这里插入图片描述

2.2 题型二:

题目及解析:

int main()
{
	char arr[] = { 'a','b','c','d','e','f' };
	printf("%d\n", strlen(arr));//因为字符数组arr中没有\0,所以在求字符串长度的时候,会一直往后找,产生的结果就是随机值
	printf("%d\n", strlen(arr + 0));//arr + 0是首元素的地址,和第一个一样,也是随机值

	//printf("%d\n", strlen(*arr));//err, arr是数组首元素的地址,*arr就是数组首元素,就是'a'-97
	//strlen函数参数的部分需要传一个地址,当我们传递的是'a'时,'a'的ascii码值是97,那就是将97作为地址传参
	//strlen就会从97这个地址开始统计字符串长度,这就非法访问内存了
	//printf("%d\n", strlen(arr[1]));//err

	printf("%d\n", strlen(&arr));//&arr是数组的地址,数组的地址和数组首元素的地址,值是一样的
								 //那么传递给strlen函数后,依然是从数组的第一个元素的位置开始往后统计,结果为随机值

	printf("%d\n", strlen(&arr + 1));//&arr+1,跳过整个数组,结果为随机值
	printf("%d\n", strlen(&arr[0] + 1));//&arr[0] + 1是第二个元素的地址,结果为随机值
	return 0;
}

x64环境下运行结果:
在这里插入图片描述

2.3 题型三:

题目及解析:

int main()
{
	char arr[] = "abcdef";//[a b c d e f \0]
	printf("%d\n", sizeof(arr));//数组中共有7个元素,结果为7

	printf("%d\n", sizeof(arr + 0));//arr + 0是首元素的地址,结果为4/8
	printf("%d\n", sizeof(*arr));//*arr其实就是首元素,1个字节
	//*arr--> *(arr+0) -- arr[0]

	printf("%d\n", sizeof(arr[1]));//arr[1]是第二个元素,1个字节
	printf("%d\n", sizeof(&arr));//&arr是数组的地址,是地址就是4/8个字节
	printf("%d\n", sizeof(&arr + 1));//&arr + 1是跳过一个数组的地址,4/8
	printf("%d\n", sizeof(&arr[0] + 1));//&arr[0] + 1是第二个元素的地址 4/8
	return 0;
}

x64环境下运行结果:
在这里插入图片描述

2.4 题型四:

题目及解析:

int main()
{
	char arr[] = "abcdef";//[a b c d e f \0]

	printf("%d\n", strlen(arr));//6
	printf("%d\n", strlen(arr + 0));//6

	//printf("%d\n", strlen(*arr));//err,传的是首元素a
	//printf("%d\n", strlen(arr[1]));//err,传的是第二个元素b
	//strlen需要传过去的是指针,如果传字符会造成非法访问内存,报错

	printf("%d\n", strlen(&arr));//6
	printf("%d\n", strlen(&arr + 1));//&arr+1跳过整个数组,导致数组后面\0没有明确位置,导致结果为随机值
	printf("%d\n", strlen(&arr[0] + 1));//从第二个元素开始向后访问,结果为5
	return 0;
}

x64环境下运行结果:
在这里插入图片描述

3. 指针和字符串相关面试题

3.1 题型一:

题目及解析:

int main()
{
	char* p = "abcdef";
	
	printf("%d\n", sizeof(p));//p是一个指针变量,大小就是4/8个字节
	printf("%d\n", sizeof(p + 1));//p+1是'b'的地址,是地址大小就是4/8个字节
	
	printf("%d\n", sizeof(*p));//*p 就是'a',就是1个字节
	printf("%d\n", sizeof(p[0]));//p[0]--> *(p+0) --> *p ,大小为1个字节

	printf("%d\n", sizeof(&p));//&p -- char**,二级指针也是指针大小为4/8个字节
	printf("%d\n", sizeof(&p + 1));//*p+1本质上还是一个指针,大小为4/8个字节
	printf("%d\n", sizeof(&p[0] + 1));//4/8 , &p[0] + 1得到是'b'的地址 

	return 0;
}

x64环境下运行结果:
在这里插入图片描述

3.2 题型二:

**题目及解析:

//由于原理和上面完全一样,所以在此就不再累赘了
int main()
{
	char* p = "abcdef";

	printf("%d\n", strlen(p));//6
	printf("%d\n", strlen(p + 1));//5
	//printf("%d\n", strlen(*p));//err
	//printf("%d\n", strlen(p[0]));//err
	printf("%d\n", strlen(&p));//随机值
	printf("%d\n", strlen(&p + 1));//随机值
	printf("%d\n", strlen(&p[0] + 1));//5
	return 0;
}

x64环境下运行结果:

4. 二位数组和指针相关面试题

**题目及解析:

int main()
{
	int a[3][4] = { 0 };

	printf("%d\n", sizeof(a));//sizeof(数组名)不管是一维数组还是二维数组都是表示整个数组,结果为3*4*4 = 48
	printf("%d\n", sizeof(a[0][0]));//大小为4

	printf("%d\n", sizeof(a[0]));//a[0]是第一行这个一维数组的数组名
	//数组名算是单独放在sizeof内部了,计算的是整个数组的大小,大小是16个字节

	printf("%d\n", sizeof(a[0] + 1));
	//a[0]作为第一行的数组名,没有单独放在sizeo内部,没有&
	//a[0]表示数组首元素的地址,也就是a[0][0]的地址
	//所以a[0]+1是第一行第二个元素的地址,是地址就是4/8个字节
	//
	printf("%d\n", sizeof(*(a[0] + 1)));//4
	//计算的是就是第一行第2个元素的大小

	printf("%d\n", sizeof(a + 1));//4 / 8
	//a是数组首元素的地址,是第一行的地址 int(*)[4]
	//a+1 就是第二行的地址

	printf("%d\n", sizeof(*(a + 1)));//16
	//*(a+1) --> a[1] -> sizeof(*(a+1))->sizeof(a[1]) 计算的是第二行的大小
	//a+1 --> 是第二行的地址,int(*)[4]
	//*(a+1) 访问的第二行的数组

	printf("%d\n", sizeof(&a[0] + 1));//4/8
	//&a[0]是第一行的地址 int(*)[4]
	//&a[0]+1 是第二行的地址 int(*)[4]

	printf("%d\n", sizeof(*(&a[0] + 1)));//16 计算的是第二行的大小

	printf("%d\n", sizeof(*a));//计算的是第一行的大小-16
	//a是数组首元素的地址,就是第一行的地址
	//*a 就是第一行
	//*a --> *(a+0) --> a[0]

	printf("%d\n", sizeof(a[3]));//16
	//sizeof在计算其大小时,其背后原理是sizeof操作符只关心其类型,根据类型来计算大小
	//并不会真正的访问内存,所以在此所谓的数组越界对sizeof计算其大小并没有太大关系
	return 0;
}

x64环境下运行结果:
在这里插入图片描述

5. 总结

1. sizeof(数组名),这里的数组表示的是整个数组,不管是一维数组还是二维数组计算的都是整个数组的大小。
2. &数组名,这里的数组名表示的也是整个数组,取出的是整个数组的地址。
3. 除此之外所有的数组名表示的都是首元素的地址。
4. sizeof计算大小时,其工作原理是根据其类型来判断的,并不会真正访问内存来计算大小。所以在计算数组大小过程中,即使出现数组越界,但对sizeof来说没有影响,依然可以计算其大小。

6. 结尾

本篇文章到此就结束了。创作不易,如果对你有帮助记得点赞加收藏哦。感谢您的支持!!

告别云端依赖:手把手教你在Windows 10/11上离线部署WhisperDesktop(含模型下载避坑指南) 本文详细介绍了如何在Windows 10/11上离线部署WhisperDesktop,包括硬件要求、模型下载、环境配置和实战应用。通过本地部署,用户可以实现高效的语音转文字功能,无需依赖云端服务,特别适合注重数据隐私和需要离线工作的场景。 阅读详情

相关推荐

记录:MCGS和正弦变频器通讯

触摸屏实现对变频器:启动、停止、频率设定、频率读取、电压读取、电流读取。通讯方式Modbus RTU。

m0_61837027的博客 1024

【C语言】指针 和 数组 笔试题详解

cpp[-2],这里的下标引用操作符的优先级高于*,先是cpp[-2],cpp[-2]相当于*(cpp-2),*(cpp-2)得到的是c+3,因为之前*cpp[-2]+3有一个解引用,所以*(c+3)得到字符串“FIRST”的首字符的地址,之后再+3则指向 S。这里ptr1[-1] 相当于 ptr1 -1, (int*)((int)a + 1);cpp[-1][-1]+1,首先确定cpp指向的是cp[2],然后cpp[-1][-1] +1相当于 * ( * (cpp-1) - 1) +1。

加油!!! 1209

实战对比:VINS和ORBSLAM3在无人机避障中的表现(含实测数据)

本文通过实战测试,深度对比了VINS和ORBSLAM3两种主流视觉SLAM算法在无人机避障中的表现。测试聚焦于光照变化、动态遮挡和快速运动三大挑战,提供了详细的实测数据与性能分析。结果表明,VINS在计算效率和实时性上占优,而ORBSLAM3在定位精度和地图管理方面更稳健,为不同应用场景下的工程选型提供了清晰依据。

醉三国 627

【指针和数组笔试题(1)】详解指针、数组笔试题

在计算之前要了解基本概念:数组名的理解数组名是数组首元素的地址有两个例外1.sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组中的大小,单位是字节。2.&数组名,这里的数组名表示整个数组,取出的是整个数组的地址以上就是第一部分的指针和数组笔试题和详细解释。

2301_76496134的博客 587

【实战指南】Jaspersoft Studio + JasperReports:从零构建企业级PDF报表

本文详细介绍了如何使用Jaspersoft Studio和JasperReports从零构建企业级PDF报表。通过可视化设计、数据连接、模板设计到最终输出的全链路支持,这套组合方案显著降低了报表开发的维护成本。文章还提供了开发环境搭建、中文乱码解决方案、Java集成代码及性能优化技巧,适合需要高效生成复杂PDF报表的开发者。

weixin_42666036的博客 246

【TC3xx芯片】TC3xx芯片电源管理系统PMS详解

本文主要介绍了TC3xx芯片的电源管理系统(PMS),重点探讨了供电模式选择、电源监控机制及电源管理模式。文章首先分析了4种供电模式及其硬件配置方式,详细说明了3.3V单电源供电模式的特点;其次阐述了Primary和Secondary两种电源监控机制,包括阈值配置和异常中断处理;最后重点讲解了CPU和系统的电源管理模式,特别对Standby模式及其进入/退出条件进行了详细说明。文章以软件开发视角解析了TC3xx芯片的电源管理功能,为ECU低功耗设计提供了技术参考。

redparrot2008的博客 1525

指针和数组笔试题解析(一)(超详解)

这么美的冬天,适合学点C语言。

爱德苏的博客 1137

Kindle电子书DRM破解全攻略:从下载到转换的完整流程(含最新DeDRM插件配置)

本文详细介绍了如何合法移除个人购买的Kindle电子书的DRM保护,实现跨设备阅读与备份。核心内容包括使用最新DeDRM插件(如noDRM分支)配合Calibre进行配置,并针对亚马逊最新的KFX加密格式提供了密钥提取与实战操作指南。文章强调该方法仅适用于个人合理使用,旨在帮助读者真正掌控自己的数字资产。

delta的博客 574

关于数组和指针的笔试题解析(详解)

本节题目来自于公司笔试,前面的题目不算很难,需要我们熟练掌握后面的题目比较难,需要我们逐个分析理解完这些题目,相信大家对指针有更深刻理解。

Giggins GaoBlog 1080

【突变检验合集】含Pettitt突变检验等

突变检验方法合集

WW、forever的博客 3533

通过一个具体的例子,讲解 SAP Cloud Platform Integration(CPI) 的使用方法

最近笔者由于项目需要,又得学习一个新工具:SAP Cloud Platform Integration,简称 CPI,以前又叫做HCI - HANA Cloud Platform Integration Service.笔者想通过本文,把使用这个工具的第一手体会,分享给曾经用过SAP CRM中间件,但尚未有机会接触到CPI的朋友们。之所以本文标题里把SAP CRM中间件和SAP CPI关联在一起,是因为二者同广义上说,扮演的都是系统集成里中间件的角色。SAP ERP和CRM通过qRFC进行业务数据同步,而中

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2271

【C指针】深入理解指针(最终篇)数组&&指针&&指针运算题解析(一)

通过前几节我们学了前面五节指针和学习了sizeof操作符知识,本小节,阿森继续和你一起做一维数组和指针笔试题,🏂当然还有关于指针运算的笔试题,干货满满!让我们开始做题😁!(🌷当然,宝子们,天气变化大,记得多注意保暖🌷)本小节我们学习了sizeof和strlen对一维字符数组,字符串数组和指针变量进行练习,我们应该对指针有了更多的理解,但是他们都离不开我们以下的知识点。sizeof用于计算变量或类型占用的内存空间(字节单位),它是编译期就能确定的常量。strlen用于计算字符串长度,但仅限于以。

a_sen的博客 1870

论文分栏前后内容不连续?教你word如何删除分节符

问题 当我们在写论文的时候,很多期刊的模板都是两栏的格式,但有的时候我们插入的图像尺寸可能太大,两栏格式放不下,因此需要将其以一栏的格式出入,如下: 但当我们把图片删除后,再将其转换成两栏格式,前后内容就出现不连续的情况: 正常情况下应该是如下: 正确处理方式 里面有个分页符,把分页符去掉,或者把你的文字全部复制到记事本里,然后重新复制回word就可以取消原有的格式了。 删除分节符的方法(以word 2019为例) -点击菜单栏上的“视图”,点击“大纲视图”。 可以看到word文档以整列的形式展开:

左手の明天的博客 1万+

【数组及指针经典笔试题解析】

数组及指针经典笔试题解析

qq_73900397的博客 1638

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C语言指针深入详解(六):sizeof和strlen的对比,【题解】数组和指针笔试题解析、指针运算笔试题解析

本文主要介绍了sizeof和strlen的对比,【题解】数组和指针笔试题解析、指针运算笔试题解析

艾莉丝努力练剑的博客,感谢大家一直以来的对艾莉丝的支持和鼓励,uu们如果对C/C++方向感兴趣的话,可以通过艾莉丝主页的微信名片加艾莉丝的好友,和努力练剑的艾莉丝一起加油! 1775

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【C语言指针超详解(六)】--sizeof和strlen的对比,数组和指针笔试题解析,指针运算笔试题解析

C++研发方向学习者📖。

会当凌绝顶,一览众山小 1605

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

数组和指针的笔试题解析(1)

在讲解之前我们需要先回顾一下数组名的意义。1.单独放在sizeof内部得到的是整个数组的大小。2.得到整个数组的地址。3. 除了上面两个例外之外碰到数组名全部表示的首元素的地址。

2403_88039061的博客 1611

指针和数组笔试题解析

下面代码的输出结果是什么:(32位平台下) 解析: 总结:1、数组名的意义2、指针类型的意义下面代码的输出结果是什么:(32位平台下) 解析: 2、题型二 下面代码的输出结果是什么:(32位平台下) 解析: 3、题型三 下面代码的输出结果是什么:(32位平台下) 解析: 总结:1、数组名的意义2、指针类型的意义3、strlen的用法下面代码的输出结果是什么:(32位平台下) 解析: 总结:1、数组名的意义2、指针类型的意义3、二维数组相关下面程序的输出结果是什么:(32位平台下) 解析:下面程序的输出结果是

在平淡的日子里寻找存在的价值 1473

C_深入理解指针(五) —— sizeof和strlen的对比、数组和指针笔试题解析、指针运算笔试题解析

C_深入理解指针(五) —— sizeof和strlen的对比、数组和指针笔试题解析、指针运算笔试题解析

祯的博客 1223

【C语言】指针的进阶(四)—— 企业笔试题解析(详细图解)

a是取出整个数组的地址,&a就表示整个数组,因此 &a + 1就是跳过一整个数组指向数组后方,因为这是一个数组的地址,不能够直接赋值给整型指针,所以需要将该地址强制转换为整型指针,才能给指针ptr接收,此时指针ptr1就指向了数组后方。&a是取出整个数组的地址,&a就表示整个数组,因此 &a + 1就是跳过一整个数组指向数组后方,因为这是一个数组的地址,不能够直接赋值给整型指针,所以需要将该地址强制转换为整型指针,才能给指针ptr接收,此时指针ptr就指向了数组后方。加号优先级是最低的,所以最后算。

Hacynn的博客 1424

掌握指针和数组:经典笔试题攻略(万字详解)

当涉及到计算机编程的核心概念时,指针和数组无疑是最重要和基础的话题之一。无论你是初学者还是有经验的开发者,深入理解和掌握这两个概念都能让你的编程技能得到质的提升。在本篇博客中,我们将带你进入指针和数组的精彩世界,探索其在编程中的作用和应用。无论你是为了笔试准备,还是为了提升自己的技能,这里都将为你提供一个深入学习的机会。在本篇文章中如有遇到不懂的知识点,可以参考以下文章《掌握指针进阶:探索字符指针、数组指针和指针数组的妙用》《掌握指针进阶:一篇带你玩转函数指针、函数指针数组及指向函数指针数组的指针!

深入解析C/C++编程技巧,带你探索高效开发之路 2385

C语言--数组&指针笔试题解析(指针:你看我几分像从前)

尊贵的各位大厂码农你们好,是的,没错,我又来找你们来帮我指正文章了,今天的主题是数组和指针的笔试题专栏,大家给掌掌眼,有问题的话还请帮忙斧正哦! 目录 前言: 一,数组笔试题 一,一维数组 二,字符数组 2.1,直接赋值型的字符数组 2.2,字符串赋值给字符数组 2.3,字符串赋值给字符指针 三,二维数组 二,指针笔试题 试题1: 试题2: 试题3: 试题4: 试题5: 试题6: 试题7: 试题8(重点理解掌握): 前言: 首先,在...

qq_61688804的博客 2043

数组和指针笔试题解析之【指针】

数组和指针笔试题解析之【指针】

天行健、君子以自强不息 806

【C语言进阶篇】 数组常考笔试题万字解析(下)

数组和&数组名的区别是我们在考试中最容易出的考察点了。笔试题解析下就给大家来点硬菜!看完直接拿捏数组和&数组名的关系!

鸽芷咕的博客 2045

指针深入第四弹--sizeof和strlen的对比、数组和指针笔试题解析、指针运算笔试题解析

本文对比了C语言中sizeof和strlen的区别:sizeof是运算符,计算变量或类型的内存大小(字节);strlen是库函数,计算字符串长度直到'\0'。重点解析了两者在数组操作中的不同表现:sizeof计算数组总大小,而strlen依赖'\0'结束符。文章还通过多个指针运算实例,演示了数组地址运算规则,包括二维数组的行指针操作和指针类型转换的影响。掌握这些区别对正确使用内存操作和避免越界访问至关重要,是C语言编程和笔试面试的核心知识点。

yue_2747的博客 1300

指针和数组笔试题及解析

一个是sizeof(数组名),另一个是取地址数组名sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小&数组名,这里的数组名表示整个数组,取出的是整个数组的地址除此之外所有的数组名都表示首元素的地址还需要注意的是,指针的大小由于系统的地址总线不同而有所不同,当我们使用的是x86环境时,指针的大小为4个字节,若使用的时x64环境,则指针的大小为8;(下述所有指针面试题都在x64环境下进行)

AUGENSTERN_dc的博客 1168
上一篇: C语言数据存储 —— 浮点型篇
下一篇: 指针进阶详解(上)
小白debug~
小白debug~ 新星创作者: C/C++技术领域 新星创作者: C/C++技术领域
博客等级 码龄4年 3510粉丝 128原创
评论 18
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白debug~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值