指针做形参新发现

C语言指针:指针作为形参如何改变其指向的地址? 题目是什么意思呢?就是一个函数的输入参数是一个指针,该函数需要改变该指针指向的地址,如: 现在有一个全局数组b,现在需要编写一个函数 输入参数是一个指针a,需要通过该函数将该指针a指向数组b,即: int b[3] = {1,2,3}; void fcn(参数); void main() { int* a; fcn(输入参数a) } 执行完fcn后,使参数的地址改变,这个功... 阅读详情

其实也不算多新奇吧,但是困住了一会儿,我觉得有必要写下来,大家都知道如果我传个值给子函数不管我在子函数里如何改变它,原来的值永远不会变,另外一个变量拥有两个值,存储在地址里面的值和地址值,对于一般变量来说存储在地址里面的值为主值,地址值为副值,而对于指针来说正好相反,所以如果你声明了一个指针并且想对它“做手脚”的话不要把它作为形参传递,而是作为返回值返回,我用一个小函数说明了这个问题

//原先错误代码
#include<stdio.h>
#include<stdlib.h>
void Func(int*);
int main(void)
{
    int *p=NULL;
    Func(p);
    //p不变
    return 0;
}
void Func(int*p)
{
    p=(int*)calloc(1,sizeof(int));
}
//正确代码
#include<stdio.h>
#include<stdlib.h>
int* Func(int*);
int main(void)
{
    int *p=NULL;
    p=Func(p);
    //p改变
    return 0;
}
int* Func(int*p)
{
    p=(int*)calloc(1,sizeof(int));
    return p;
}

以上仅为个人观点,如有问题,还望指教

引用形参、指针形参的使用 引用形参可以改变主函数内的实参值 #include<iostream> using namespace std; int change1(int a,int b) //a、b为变量,不改变主函数内的实参值 { int c; c=a; a=b; b=c; return 0; } int change2(int &a,int &b) //a、b为引用 {... 阅读详情

相关推荐

保姆级教程:用LoRA微调Chinese-Mistral-7B模型,并一键部署到Ollama(附完整代码)

本文提供了一份详细的LoRA微调Chinese-Mistral-7B模型的保姆级教程,涵盖环境配置、数据预处理、微调实战、模型量化及Ollama部署全流程。通过实战案例和完整代码,帮助开发者快速构建专属中文大模型,适用于医疗、法律等垂直领域。

weixin_30369041的博客 250

深入理解指针作为函数形参

关于c++基础知识,指针的相关问题

weixin_44450058的博客 8194

Axure原型模板与元件库APP交互设计素材(附资料)

在Axure中,手机模型是展示APP或小程序界面效果的重要工具。通过导入手机模型元件,设计师可以更加直观地模拟真实设备的显示效果,从而更准确地评估设计的可行性和用户体验。Axure官方及第三方资源库中提供了多种品牌和型号的手机模型,如iPhone、Android等,设计师可以根据项目需求选择合适的模型进行使用。Axure作为一款强大的原型设计工具,为APP和小程序的设计与开发提供了丰富的界面组件元件库和交互设计素材。

招风的黑耳优快云 1981

指针作为函数形参

普通函数参数 下面程序试图改变main函数中a和b的值 #include void fun(int x,int y) {    int c;    c=a;    a=b;    b=c; } int main() {    int a=1,b=2;    fun(a,b);    printf("a=%d b=%d\n",a,b);    return 0; }

u011555996的博客 2053

SDIO_WiFi驱动学习之SDIO架构介绍及源码分析

一、引言 因为WiFi驱动比较复杂,所以WiFi驱动的博客将分为两篇来写。 本篇博客主要介绍Linux下的SDIO架构及源码分析。 二、SDIO WiFi SDIO-Wifi模块是基于SDIO接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户主平台数据通过SDIO口到无线网络之间的转换。SDIO具有传输数据快,兼容SD、MMC接口等特点。 对于SDIO接口的WiFi,首先,它是一个SDIO的卡设备,然后具备了WiFi的功能。所

陈子陌的博客 1万+

华为OD机试真题 新系统2026-04-15 Java&Go 实现【小猫钓鱼纸牌游戏】

有两名玩家甲和乙,他们玩一种“小猫钓鱼”扑克牌游戏。扑克牌为A、2、3、....J、Q、K,不考虑花色都用1-13来表示,然后给甲,乙两人各发n张牌,按给定顺序排成队列,这些牌背面朝上,正面朝下放置,队列的第一个元素是背面的第一张牌。 游戏规则如下:

MISAYAONE的博客 354

指针做形参

一级指针和二级指针在做形参时的不同:指针用作形参,改变指针地址则值不能传回,改变指针内容而地址不变则值可以传回。   (特殊情况:改变指针地址采用返回值也可以传回地址) 对于一级指针,做形参时传入地址,如果函数只改变该指针内容,OK,该指针可以正常返回,   如果函数改变了指针地址,除非返回该指针,否则该指针不能正常返回,函数内对指针的操作将无效。 对于二级指针,做形参时传入地

9442

ardupilot 获取避障传感器数据

本节主要记录自己学ardupilot的避障代码过程,首先看下怎么注册避障传感器,然后怎么获取避障数据。

陌城烟雨 5524

C语言-指针作为函数形参类型

C语言函数里最常用就是指针传参和返回地址,特别是字符串处理中;这篇文章就介绍如何使用指针作为函数参数、并且使用指针作为函数返回值。

6309

流体动力学仿真软件:CFX_(10).案例实践:复杂流场分析

在“Phases”选项卡中,定义参与仿真的不同相。例如,如果您要分析气液两相流,可以定义“Air”和“Water”两个相。

kkchenjj的博客 1688

C++(Qt)软件调试---Windows下Qt使用dump定位崩溃位置(1)

在C++/Qt程序崩溃时,往往很难找到崩溃的原因,如果是稳定复现的问题还好,但是多数情况遇见的问题是随机出现的,这时想要快速找到问题并解决就需要通过dump文件定位崩溃位置。

mahuifa的博客 1万+

Day17 指针变量做函数形参 指针函数 函数指针

指针变量做函数形参 指针函数 函数指针

AppreciateIt的博客 2383

手把手完整实现STM32+NB-IoT+MQTT+ThingsCloud云平台+手机APP(Android或iOS)及微信小程序及Web app 应用

本教程以远程温湿度显示及点灯作为示例。最终效果实现本地OLED显示屏、云平台和手机APP、微信小程序和Web App可远程查看温湿度数据,并可远程控制LED灯亮灭。以此完成基于MQTT协议的NB-IoT远程发布订阅数据,以此在本教程基础上可扩展开发更多的功能。

嵌入式阿齐Archie 2万+

C语言中指针数组做函数形参,数组指针做形参

一、C语言中的数组指针与指针数组 首先我们需要了解什么是数组指针以及什么是指针数组,如下图: int *p[5]; //指针数组 int (*p)[5]; //数组指针 那么两个之间有什么区别呢: 数组指针的意思即为通过指针引用数组,p先和*结合,说明了p是一个指针变量,指向一个大小为5的数组。所以,int (*p)[5]即为一个数组指针。int *p[5]则是一个大小为5且存放整型指针的数组。 那么也可以理解为数组指针是指向数组的指针,其中数组中存放的还是指针

赵凯月的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

指针数组做main函数的形参

指针数组作为main函数的形参在C语言中扮演着重要的角色。该机制允许程序通过命令行传递参数,使程序更具灵活性和可配置性。main函数的原型中,argc表示命令行参数的数量,而argv是一个指针数组,每个元素都指向一个以 null 结尾的字符串,这些字符串包含了程序的命令行参数。通过一个简单的例子,我们可以看到这一机制的实际运用。程序通过循环遍历argv数组,输出每个命令行参数的内容。这种设计使得程序能够接受任意数量的命令行参数,使程序在运行时更加灵活。

朝花夕拾 7248

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

函数的形参(普通形参、指针形参、引用形参)

函数的形参(普通形参、指针形参、引用形参)代码示例

菜菜的菜园子 6608

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

指针做形参,形参的传递详解

一、用二级指针作为函数参数,有两种典型情况: 1.需要传递一级指针的数组时: 例如标准C的main函数: int main(int argc, char*[] argv),数组最高维可以退化,char*[] argv等价于char** argv。这里argv代表命令行参数数组。 2.需要对传入的一级指针进行修改时: 例如: void alloc_new_char_array(int n

Shuuki 1万+

整形指针做形参和实参一级指针和二级指针的传递关系(整形)

一、二级指针做形参,一级指针的地址做实参 #include<stdio.h> void A(int** t) { int x = 3; printf("A:t: %x\n\n", t); printf("A:&t: %x\n\n", &t); printf("A:*t: %x\n\n", *t); printf("A:&(*t): %x\n\n", &(*t)); printf("A:**t: %x\n\n", **t); pr

嵌入式开发记录 1143

指针做形参时应该注意的地方

1. 指针作为形参时,不可以将指针的地址改变,比如调用malloc。 2. 只可以对指针指向的值做改变。       首先看以下程序:   #include &lt;stdio.h&gt; int *swap(int *px, int *py){     int temp;     temp = *px;     *px = *py;     *py = temp;     ret...

qq_31186123的博客 6354

函数形参(指针,引用,const,数组形参)

指针形参 指针也是对象,也会拷贝,所以分实参指针和形参指针。在传进函数时,实参进行拷贝,所以在函数里改变指针值不影响实参。 void reset(int *ip) { *ip = 0; ip = 0; //只改变了形参 } 引用形参 引用不是对象,通过引用可以改变实参 void reset(int &i) { i = 0; //改变了实参 } 使用...

asdfghwunai的博客 2468

形参对实参的影响

形不改实 形参的改变一般不会影响实参的改变。 传值 void fun1(int a,int b) { int t; t = a; a = b; b = t; } int main() { int a=4,b=3; fun1(a,b); printf("%d %d\n",a,b); return 0; } 输出:4 3 由上面的例子可以看出,实参的改变没有影响到实参的改变。 原因是形参a,b的作用域只在fun1函数里,函数结束形参也就被释放了。而且调用函数fun1时,实参传递给形参时,不是用

qq_45165693的博客 7610

c语言:指针变量的实参与形参

最近遇到一个坑,让我对实参和形参有了更深的了解。 假如在main方法中有一个指针变量p,它指向的内存地址为20000。现在将它传递到一个函数中,在这个函数里让它指向内存地址为20048。当函数执行完返回到main函数时,p所指向的地址还是20000,而不是20048。 看下面的代码: #include&lt;stdio.h&gt; void A(int* p){//此处p为形参 int...

lkt_anhua的博客 1万+

数组指针作为形参传递

当数组作为函数形参时,数组的地址可以用做函数调用的实参。 可以通过数组地址的传递,在函数内可以对该数组进行访问和修改。 eg: #include <stdio.h> #define SIZE 10 /* 形式1 */ void func_1(const char a[SIZE]) { printf("获取数组的第一个元素=%c\n", a[0]); printf("...

edward_zcl的博客 1万+

函数形参为指针和指针引用的区别

当函数的形参为指针时: 形参只是获得了实参的地址值,当你改变形参的指向时,实参的指向并不改变。 当函数的形参为指针引用时: 形参不仅仅获得了实参的地址值,还和实参地址绑定,改变形参的指向就能改变实参的指向。 示意图如下: 测试代码: #include <iostream> using namespace std; void ChangeAddr(int *addr) { cout << "指针传参修改cur的:" << endl; cout << "

weixin_43744293的博客 2626

函数指针形参

一、在介绍指针形参之前,先简要说明下两个运算符 & 和 *。 1、取址运算符 & 用来取得其操作数的地址。取址运算符的操作数必须是在内存中可寻址到。换句话说,该运算符只能用作函数或对象(例如左值),而不可以用于位字段,以及那些未被存储类型修饰符register声明的内容。 float x, *ptr; ptr = &x; // 合法:使得指针p...

spdian的博客 5237
下一篇: 不带缓冲io的理解
github_34849911
博客等级 码龄11年 0粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值