C和指针---高级指针

C和指针 第13章 高级指针话题 13.9 问题 阅读详情

1.指向指针的指针

int i;
int *pi;
int **ppi;
以下两个语句:
ppi = π
这条语句把ppi初始化为指向变量pi,这样后面可以安全地对ppi执行间接访问操作
*ppi = &i;
这条语句把pi(通过ppi间接访问)初始化为指向变量i,
变量i是一个整数,pi是一个指向整型的指针,但ppi是一个指向pi的指针,即指向整型的指针的指针

2.函数指针

函数指针常见的两个用途是转换表(jump table)和作为参数传递给另外一个函数。
声明一个函数指针并不意味着马上可以使用,和其他指针一样,对函数指针执行间接访问之前必须把它初始化为指向某个函数。例如:
int f (int);
int (*pf)(int) = &f;
第2个声明创建了函数指针pf,并把它初始化为指向函数f。声明完成后,可以使用三种方式调用函数:
int ans;
ans = f(25);
ans = (*pf)(25);
ans = pf(25);
2.1 回调函数
回调函数(callback function):把一个函数指针作为参数传递给其他函数,后者将“回调”用户的函数

3.字符串常量

当一个字符串常量出现于表达式中,它的值是个指针常量。
“xyz” + 1;
字符常量是个指针,这个表达式计算“指针值加1”的值,它的结果是个指针,指向字符串中的第2个字符:y;

华为OD机试真题 新系统 2026-06-10 C++ 实现【设备重排SN】 通信设备SN一般是包含:字母、数字,用'-'(破折号)进行分组分割,例如:8F-3T-1G-2n是一个有效的SN地址。 现在要对已经存在的SN 按照新的规则进行重排: 阅读详情

相关推荐

Cisco Packet Tracer 7.3免登录技巧:3种方法快速跳过注册界面(附详细截图)

本文针对Cisco Packet Tracer 7.3启动时遇到的登录界面问题,提供了三种合法高效的解决方案。详细介绍了如何利用官方访客模式快速启动、注册思科账号实现一劳永逸登录,以及通过调整本地安装配置优化启动流程,帮助网络学习者与备考者绕过繁琐步骤,快速进入实验环境。

weixin_29305337的博客 739

C语言高级指针(数组指针,函数指针)

C语言中指针的运用最为重要,在熟练使用一级指针之后,高级指针便接踵而来,今天就来介绍高级指针。 二级指针 (int ** p) 对于一级指针 int * q 来说,q是一个int * 类型的变量,指向一个 int 类型的变量。对于二级指针 int ** p 来说,p是一个 int ** 类型的变量,指向一个 int * 类型的变量,即 p 指向一个一级指针变量。 #include <stdio.h> int main() { int **p = NULL; int *q =

weixin_43374839的博客 432

开发基于GDL235KBQ6开发板的IAP升级程序(HEX协议+串口空闲中断 + DMA接收数据)

使用GDL235kB开发板,实现串口iap升级程序的bootloader代码编写,app为led灯闪烁,并完成通信c代码

zhaozijuncc的博客 642

深入理解指针之高级指针

在指针中,还有指针数组、数组指针、函数指针、函数指针数组、函数指针的数组的指针这样一些高级指针,所以我们需要了解并掌握它们的含义和用法:我们得先知道,  指针是和数组无关的:1.指针是一种类型;数组也是一种类型;2.指针可作左值,数组名却不可以;一、指针数组int *arr1[10];char *arr2[4];char **arr3[5];如上,便是指针数组,那么指针数组是数组还是指针?#是数组...

dongbo_aaa的博客 1209

SMIC Memory配置与Library Compiler实战:从lib到db的高效转换

本文详细介绍了SMIC Memory Compiler的配置要点与使用Library Compiler将.lib文件高效转换为.db文件的完整流程。文章深入解析了关键配置参数对性能和面积的影响,并提供了从交互式操作到自动化脚本的实战指南,帮助数字芯片设计工程师顺利完成存储器模型的生成与集成,确保Design Compiler能正确调用。

weixin_28314575的博客 335

LangChain Agent Skills 实战指南:12个案例玩转智能体技能封装与编排

大语言模型应用开发中,智能体(Agent)的能力扩展正从零散的函数调用走向标准化封装。Agent Skills 将某项具体能力组织为带说明、代码与依赖的技能目录,让模型能自动发现和调度,其核心价值在于解决工具数量膨胀后的维护混乱与调用失控问题。与 Tool 的单一执行、MCP 的协议连接不同,Skill 更强调能力的语义描述与组合复用,配合 LangGraph 的状态编排和 LangSmith 的可观测性,可构建生产级智能体系统。在实际场景中,Agent Skills 可覆盖 RAG 知识库问答、多轮记忆保

weixin_34335458的博客 407

C和指针 第13章 高级指针话题 13.6 总结

C和指针 第13章 高级指针话题 13.6 总结

weixin_客子光阴的博客 273

海思MPP平台千兆以太网驱动集成与测试指南

千兆以太网(GE)是嵌入式视觉系统中音视频流传输与边缘控制的核心物理接口,其底层驱动需兼顾DMA高效调度、中断实时响应与PHY链路稳定性。在Linux嵌入式环境中,GE驱动通常基于net_device框架实现,并深度耦合于SoC专用媒体处理平台(如海思MPP),通过硬件抽象层(HAL)屏蔽寄存器操作,提供零拷贝、RGMII时序适配、描述符环管理等关键能力。技术价值体现在降低CPU负载、保障1080p@30fps实时推流、支持ONVIF/RTSP协议交互及固件远程升级。典型应用场景包括网络摄像机(IPC)、A

weixin_42599908的博客 89

深入理解指针(C和指针 第13章 高级指针)

第13章 高级指针 指针的各种定义方法 注意c语言符号优先级:.的优先级高于 “*”()高于[ ];[ ]高于星号;函数( )高于星号; int abc();//返回值为int类型的函数 int abc[3];//int 型数组 int **bac();//返回值为“int型指针的指针”的函数 注意()的优先级大于“*” int (*abc)();//返回值为int的函数指针 int (*abc)[6];//指向“int型数组”的指针 注意:int *abc[6]=>指针数组,数组中的元素都是指针 i

weixin_42385823的博客 306

Synthesia技术浅析(四):自然语言处理

Synthesia 的自然语言处理(NLP)模块是其核心技术之一,涵盖了文本转语音(TTS)、情感分析以及多语言支持等多个方面。

m0_75253143的博客 1166

解决gradle下载慢的问题

allprojects块的repositories用于多项目构建,为所有项目提供共同所需依赖包。而子项目可以配置自己的repositories以获取自己独需的依赖包。buildScript块的repositories主要是为了Gradle脚本自身的执行,获取脚本依赖插件。根级别的repositories主要是为了当前项目提供所需依赖包。慢的问题在于下载时链接的是官网,而官网下载速度太慢;1、解决gradle不同版本下载慢的问题。但是这个镜像站的版本不全,低版本可以用;有公司做的国内镜像站;

weixin_42551921的博客 2051

《C和指针》第13章 高级指针话题

本章介绍了C语言中的一些高级指针话题,包括指向指针的指针、高级声明、函数指针及其应用(回调函数和转移表)、命令行参数以及字符串常量。这些知识对于编写复杂、高效和灵活的C程序至关重要。指向指针的指针和高级声明用于处理复杂的数据结构和函数接口;函数指针及其相关概念提供了代码模块化和灵活性的强大手段;命令行参数允许程序在运行时接受外部输入;字符串常量则是处理文本信息的重要方式。通过掌握这些内容,开发者能够更深入地理解C语言的底层机制,提升编程能力,开发出更健壮和高效的应用程序。

qq_40844444的博客 946

lammps案例:Cu三点弯曲模拟

大家好,我是小马老师。 本文分享一个Cu弯曲的案例。 本案例参考三点弯曲实验,三点弯曲试验是将试样放在弯曲装置上,在试样上加载进行弯曲试验,直到达到规定的弯曲程度或发生断裂。 模拟原理是在z方向固定两侧端点,在x和y方向不固定,模拟左右两个支撑点,中间压块向下运动实现弯曲。 初始结构: 运行结果为: 模拟的重点是使用fix setforce命令压住左右两端,使其不能沿z轴上下移动,但是又不能在xy方向限制其移动。 压块的运动方式比较简单,给其一个下压的速度即可。 为防止压块变形,使用setforce命

lammps_jiayou的博客 2279

[C和指针] ch13. 高级指针话题

第十三章:高级指针话题 GitHub 链接:ch13. 高级指针话题 指针是 C 语言的最精华所在了,指针与内存连接,使用得当堪比汇编!!! 本章内容值得反复研读,查阅资料对比阅读! 本章总结及注意点 部分课后习题解答 13.9 问题 很强的问题。当时做的时候错了 d,e,g,i,j,l 脑子怕是不太好使… 与所有指针算法一样,值 1 被缩放到指针所指向的对象的大小,在本例中是指向字符的指针。结果是 ptr 指向数组的下一个元素,即 ptr+1=&array[1]。其实现在 ptr

Y-puyu 的博客 468

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

深度学习工具包 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语言-指针高级(二级指针和多级指针、数组指针、指针数组、函数指针);

本章详细讲解:C语言二级指针和多级指针、数组指针、指针数组、函数指针、函数指针数组;

李永奉的博客 1467

假人有限元模型

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

C和指针:高级指针话题

进一步探讨指向指针的指针这些声明在内存中创建了下列变量。如果它们是自动变量,无法猜测它们的初始值。二级指针指向一级指针因为函数传参使用值传递不会修改原值,传递指针可以修改原变量,如只有传入一个链表节点的指针才可以进行链表的插入或删除操作。

_ 695

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

肯尼斯·里科《C和指针》第13章 高级指针话题(1)进一步探讨指向指针的指针&变量的高级声明

巩固C语言

feiyu66666的博客 1148

C和指针 第13章 高级指针话题 13.2 高级声明

C和指针 第13章 高级指针话题 13.2 高级声明

weixin_客子光阴的博客 154

C语言中的高级声明--《c和指针》摘要

分析C语言中的高级声明时,记住三点: 1、用于声明变量的表达式和普通的表达式在求值时所使用的规则相同 2、下标运算符[ ] 和( )的优先级大于* 3、从里往外分解,可以使用替代符号帮助分解 例子: 1、 int (*f) [];  int *f[]; 前者是

liuxialong的专栏 1049

《C和指针》第十三章 高级指针话题

1.一个指针变量可以指向另一个指针变量,和其他指针变量一样,yigezhixu

xiaoying1232的专栏 516

《C和指针》学习笔记七/链表 高级指针/

链表就一些包含数据的独立数据结构(通常称为节点)的集合。 在单链表中,每个节点包含一个指向链表下一节点的指针。链表最后一个节点的指针字段的值为NULL,提示链表后面不再有其他节点。在你找到链表的第1个节点后,指针就可以带你访问剩余的所有的节点。为了记住链表的起始位置,可以使用一个根指针。根指针指向链表的第1个节点。注意根指针只是一个指针,它不包含任何数据。 在一个双链表中,每个节点都包

Tester_Pete 1054

C高级指针话题和对于浙大部分补充解析

介绍了指针数组,二级指针,函数指针

weixin_72899100的博客 296

C++(指针和高级指针)-上篇

【在指针中存储地址】 int *pAge=nullptr; //将PAge声明为int指针,即用于存储int变量的地址 如果将指针初始化为0或者NUll,以后必须将变量的地址赋给它,如下例代码: int howOld=50; int *pAge=nullptr; pAge=&howOld; 【间接运算符(解除引用运算符)】 int howOld=50;...

weixin_30954607的博客 162

《C和指针》读书笔记(第十三章 高级指针话题)

众所周知,指针是C语言的灵魂,所以本书(《C和指针》)才会将较多的笔墨放在指针的相关话题上,本章我们将看到更多关于指针的应用,更好地诠释了C语言的独特魅力。

weixin_43719763的博客 536

c语言—指针高级和宏定义

1.结构体指针    1)指向结构体的指针    2)(*p).sex = ‘m’            p->sex = ‘m’             (*p)对指针的取值后是结构体变量,。sex是访问成员变量         使用指针可以直接访问结构体成员变量p->sex     3)练习 /*定义⼀一个点坐标的结构体CPoint,包含两个float 成员x,y。 定义两个

xxdgeren的专栏 2042

C和指针读书笔记——高级指针话题

原创文章,转载请注明出处:http://blog.youkuaiyun.com/yanghaoran321/article/details/7658582 1、只有当确实需要时,才应该使用多层间接访问,不然程序将会变得更庞大,更缓慢并且难以维护; 2、关于一些高级声明: int f; //一个整型变量; int *f; //一个指向整型的指针; int f();

技术随笔 1117
上一篇: C和指针---使用结构和指针
下一篇: C和指针---预处理器
ldxFashion
博客等级 码龄6年 0粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值