指针进阶

全网首发--Unet3+改进16:在不同位置添加RepLKBlock超大卷积核 本文提出了一种基于大核卷积的神经网络架构RepLKNet,旨在缩小CNN与ViTs之间的性能差距。通过重新审视CNN中的大核设计,研究证明使用少量大卷积核替代多个小核能获得更强大的性能。提出的RepLKNet采用31×31大卷积核,在ImageNet和下游任务上取得了与SwinTransformer相当或更好的结果,同时具有更低延迟。文章详细介绍了实现步骤:(1)创建RepLKBlock模块文件;(2)在模型层中添加注意力机制;(3)在UNet模型中集成RepLKBlock;(4)完成训练流程。该方法展现了 阅读详情
  • 指针数据和指向指针的指针是如何被定义和使用的?
  • 指针如何作为函数的返回值?
  • 指向函数的指针的意义是什么?
  • 对链表这种DS,如何使用动态内存分配操作?

指针数组

指针数组本质是数组,数组的每一个元素都是指针(针数组是由指针变量构成的数组)

  • 一维指针数组定义的一般格式 类型名 *数组名【数组长度】
  • 其中类型名指定数组元素所指向的变量的类型
char *color[5]={"red","blue","yellow","green","black"};

上面的color是数组,数组中的每一个元素都是char*型的指针,指向一个字符串

指向指针的指针(二级指针)

类型名**变量名

int a=10;
int *p=&a;
int **pp=&p;

一级指针p指向a,二级指针指向
a<=>*p<=>**pp
&a<=>p<=>*pp
&&a<=>&p<=>pp

二维数组的指针形式

二维数组是数组元素为一维数组的一维数组。

  • 数组名a是a[0]的地址即&a[0]
  • a[0]是a[0][0]的地址即&a[0][0]
  • &a[0]=&&a[0][0]
  • 二维数组名a是二级指针
  • a[0]是一级指针
  • a+i为第i行的地址,等价于a[0]
  • *(a+i)为第i行首元素的地址
  • **(a+1)是第i行首元素的值
a[i][j]=*(*(a+i)+j)=*(a[i]+j)

命令行参数

假设有一个test.c的C语言源文件,经过编译、链接之后,生成可执行程序test.exe,它可以直接在操作系统环境下以命令行方式运行。test整个文件名,作为命令,就是以命令行反射光hi运行该程序。输入命令时,在可执行文件(命令)名的后面可以跟一些参数,爱一个命令行中可以包括命令和参数,这些参数称为命令行参数;

  • 命令名 参数1 参数2 参数3 …参数n
  • 命令名和各个参数之间用空格分隔,也可以没有参数
  • int main(int argc,char* argv[])
  • argc argv就是函数main()的形参,其中argc是argument count的缩写,用于接收命令行参数的个数,argv是argument vector的缩写,是以字符串常量形式存放的命令行参数(包括命令本身也作为有关参数)
  • 用命令行的方式运行程序时,函数main()被调用,与命令行有关的信息作为实参传递给两个形参。

指向函数的指针

C语言中函数名是函数的入口地址,可以定义一个指针变量,接收函数的入口地址,让他指向函数,这就是指向函数的指针,也称函数指针,通过函数指针可以调用函数,它还可以作为函数的参数。

函数指针的定义
  • 函数指针定义的一般格式为:类型名 (*变量名)(参数类型表)
  • 类型名指定函数返回值的类型,变量名是指向函数的指针变量的名称。
  • eg: int (*funptr)(int,int);定义了一个函数指针funptr
通过函数指针调用函数

在使用函数指针前,要先对其赋值,将一个函数名赋给函数指针,但该函数必须也已定义或声明,且函数返回值的类型和函数指针的类型要一致。

fun(3,5);
(*funptr)(3,5);

通过函数指针调用函数的一般形式:
(*函数指针名)(参数表)

函数指针作为函数的参数

函数名或已赋值的函数指针也能作为实参,此时,形参就是函数指针,它指向实参做代表函数的入口地址

出现 has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present on the 解决方法 Access to XMLHttpRequest at 'http://127.0.0.1:5000/api/data' from origin 'http://10.197.0.79:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. 阅读详情

相关推荐

高通410随身WiFi刷OpenWRT与Debian双系统一键集成方案

本文详细介绍高通410随身WiFi设备刷入OpenWRT与Debian双系统的一键集成方案。通过虎王工作室提供的一键刷机包,用户可轻松实现双系统部署,兼顾OpenWRT的网络功能与Debian的完整应用服务,适用于网络加速、服务器部署等多种场景,并提供了硬件资源分配与系统切换的实用指南。

docker7nomad的博客 1142

字符串数组字符数组是一维数组字符串数组是以字符串作数组元素的数组,可看成一个二维字符数组 char* month[]是指针数组,注意和指向二维数组指针的定义区别加小括弧(char*) month[3]

字符串数组有别于字符数组。字符数组是一个一维数组,而字符串数组是以字符串作为数组元素的数组,可以将其看成一个二维字符数组

二进制模----细微行动改变影响世界 685

跟着团子学SAP EPPM:项目管理常见的集成场景(PPM\PS\MS Project)

在SAP的EPPM解决方案中,针对企业战略级别的投资组合管理首先是定义合适的投资组合的层级结构,在投资组合下可以通过不同维度去定义投资篮(Portofolio Bucket)进行层层拆分,在最下层级的投资篮下可以分配明细的投资项(Portofolio Item),投资项可以是独立的一个一个具体执行的项目,也可以是单纯的一次服务等等。 今天主要聚焦在投资项的维度展开讲一下在SAP中投资项常见的几种集成模式: 集成场景1:使用PPM中的Project Management进行项目管理 第一个场景是在创建投资项

Lucas1211的博客 4141

c语言中的字符串数组,详解C语言中的字符串数组

在C语言当中,字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示第一种表示方式固定了每个字符串的最大大小。第二种没有字符串的大小限制。#include #include //该程序的功能是 输入阿拉伯数字的月份数 输出英文月份int main(){//一个字符串数组 它的下标代表英文月份的阿拉伯数字char *month[] = {"January","Febru...

weixin_35368877的博客 6862

解决Android UVCCamera stopPreview 报错 崩溃 闪退 问题

在使用libuvccamera库的UVCCamera时,经常在调用stopPreview关闭预览的时候,app直接崩溃闪退了,经过综合各种修改源码的方案,已解决这个问题,以下请参考: 首先找到android_usbfs.c,linux_usbfs.c两个原文件,在两个文件中都可以找到这段代码,按如下示例修改: 修改前: for (i = 0; i < num_urbs; i++) { if (urb == tpriv->iso_urbs[i]) { urb_idx = i + 1;

hanye2020的博客 3577

腾讯滑块验证码防水墙 tdc.js 补环境实录

腾讯滑块验证码破解研究摘要 本文记录了破解腾讯防水墙滑块验证码(tdc.js)的全过程。研究重点包括: 流程分析:通过抓包分析验证码完整链路,识别出关键参数collect和eks需从tdc.js虚拟机获取 环境模拟:采用渐进式补环境方法,针对字节码虚拟机特性构建完整的window对象,包括navigator、screen、canvas等API的精确模拟 核心破解:成功调用TDC.getData()和TDC.getInfo()获取关键参数,解决POW计算和滑块缺口识别问题 优化调整:针对errorCode 5

码王吴彦祖的博客 235

如果月份month为1—12的一个月份,输出该月份的天数;

package com.test; import java.util.Scanner; //使用switch语句完成 public class dameIf { public static void main(String[] args) { int month; Scanner sc = new Scanner(System.in); System.out.println(&quot;请输入...

weixin_43740453的博客 4180

深度解析:Android开发工程师(嵌入式系统方向)职位 - 技术需求、面试准备与发展路径

本文深入分析了嵌入式Android开发工程师的岗位要求和技术内涵。该职位需要掌握C/C++、Linux系统编程、硬件接口等核心技术,能够进行Android系统底层定制开发,包括HAL层实现、Framework修改、性能优化等工作。文章详细解读了岗位职责,梳理了必备技术栈,提供了针对性的面试问题与参考答案,并探讨了职业发展路径。这类岗位要求开发者兼具软件工程能力和硬件基础知识,适合在智能电视、机顶盒、车载系统等嵌入式领域发展的技术人员。

郑伟强dev的专栏 135

C语言学习教程之详解C语言中的字符串数组

在C语言当中,字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示 第一种表示方式固定了每个字符串的最大大小。第二种没有字符串的大小限制。 #include <stdio.h> #include <string.h> //该程序的功能是 输入阿拉伯数字的月份数 输出英文月份 int main() { //一个字符串数组 它的下标代表...

C语言学习之家 685

VS2019项目使用CGAL6.1配置教程详细步骤

在VS2019项目中使用CGAL详细步骤

插件开发 333

YOLOv11模型剪枝实战:让检测速度翻倍,精度仅降1%的终极优化教程

模型剪枝是YOLOv11落地边缘场景的“关键一步”——它让模型在“瘦身”的同时,几乎不损失精度。从稀疏化训练到通道剪枝,再到工程部署,本教程已为你打通全流程。现在就动手尝试,让你的YOLOv11模型在嵌入式设备、移动端上也能“飞起来”——相信我,当你看到剪枝后的模型在资源受限设备上仍能精准检测时,你会明白这份技术的价值。

m0_64661770的博客 713

c语言指针进阶部分

我们在创建数组的时候,会给我们分配一块内存,同时这个数组有地址,地址就是首字符的地址,让我们去往里面去放东西,这一次我们放的是 hello world ,这个时候,我们又创建了一个数组,又会为我们分配一块内存,同时这个数组也有地址,让我们去往里面去放东西,这一次我们放的也是 hello world ,所以这两个数组里面的内容是一致的,但是地址不一样,我们比较的是数组名,数组名就是首元素的地址,就是比较地址。在这里我们打印的是函数的地址,我们可以看到加不加&取地址符号结果都是一样的,这是不是和数组差不多啊。

2402_84602321的博客 1869

医疗AI知识库更新慢?提示工程架构师用Agentic AI自动更新的策略

我们的目标是用Agentic AI替代传统更新流程中的“重复劳动”,让医疗知识库(以知识图谱为例)能自动跟踪最新医学进展,把“更新周期从数月缩短到数天”。从PubMed/指南数据库自动抓取新文献;用提示工程从文本中提取结构化医学知识;自动校验新知识与旧知识的冲突;将通过校验的知识写入知识图谱。拆问题:先讲医疗知识库更新慢的3大根源;给方案:用Agentic AI设计4个“小助手”解决问题;讲原理:每个小助手的工作逻辑+提示工程技巧;做实战。

AI 原生应用开发的博客 1062

【C进阶】指针的进阶

此篇博客干货满满,先是以很长的篇幅讲解了关于各类复合指针,后续主要介绍了回调函数中的qsort函数,可谓是十分巧妙,掌握指针的进阶,就对指针有很深的认识,家人们三连支持一下吧!!

m0_70088010的博客 1184

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

深度学习工具包 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语言——进阶指针理解

函数调用约定定义了函数在调用过程中参数传递、堆栈管理和返回值处理的规则。它确保了调用方(Caller)和被调用方(Callee)对函数调用的底层细节达成一致,避免因规则不匹配导致的程序崩溃或数据损坏。

Dfuen的博客 961

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

指针的进阶学习

指针的进阶学习总结

haPover的博客 516

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

进阶指针

进阶指针 #mermaid-svg-W4P6ZM6qmxPysbqz .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-W4P6ZM6qmxPysbqz .label text{fill:#333}#mermaid-svg-W4P6ZM6qmxPysbqz .node rect,#mermaid-svg-W4P6Z

mingren_1314的博客 265

【C语言进阶】指针的进阶【上篇】

本文讲解了指针的进阶中的字符指针,数组指针,指针数组,数组传参和指针传参等一系列的知识,图文并茂,让你可以看懂并且理解

你我皆为凡人的博客 1546

进阶C语言-指针的进阶(一)

进阶指针详解

qq_73121173的博客 1673

【C语言】指针进阶【万字详细版】

进阶的指针有指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针等等,让我们来探讨指针的高级主题。

小明的博客 2366

11 指针进阶

指针可以指向一个普通类型的数据,例如 int、double、char 等,也可以指向一个指针类型的数据,例如 int *、double *、char * 等。如果一个指针指向的是另外一个指针,我们就称它为二级指针,或者指向指针的指针。假设有一个 int 类型的变量 age,page是指向 age 的指针变量,ppage 又是指向 page 的指针变量,它们的关系如下图所示:指针变量也是一种变量,也会占用存储空间,也可以使用获取它的地址。

weixin_45737357的博客 962

c语言进阶 指针

指针数组是一种特殊的数组,其核心特点在于每个数组元素都是一个指针变量,这些指针可以指向不同的数据类型。&arr的存储类型&arr(*p)表示 p 是指针(*p)[5]表示 p 指向包含 5 个元素的数组表示数组元素为 int// 正确:p是指向包含5个int的数组指针// 正确:p1指向首元素(类型int*)// 错误:类型不匹配(int* 与 int (*)[5])// 错误:必须指定数组大小int* p1[5];// 指针数组:包含5个int*的数组。

ztztz111的博客 1729

C语言进阶:指针进阶(数组参数和指针参数、函数指针和函数指针数组)

C语言进阶,介绍数组参数和指针参数、函数指针和函数指针数组的内容

2501_91709575的博客 3250

【c语言进阶】指针进阶 -- 让你玩转指针

初学者的指针进阶

ykf_2022_12_1的博客 1716

C语言指针进阶训练

对C语言指针的进一步学习,通过常见的进阶练习,能够帮助学者更加深刻的学习指针的实际操作与用法。

Hello_shuo的博客 2214

C语言进阶:指针进阶(字符指针、指针数组、数组指针)

C语言进阶,指针进阶,对于指针更加深入的了解

2501_91709575的博客 2961
上一篇: 编译预处理详述(文件包括 宏定义 编译预处理)
下一篇: 文件
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值