在给结构体成员赋值的时候,函数参数只能使用指针么?

我尝试不用指针,用结构类型变量作为函数参数,就是修改的图中的fill函数的参数,结果报错说 主函数定义的结构体变量(即c)未初始化图片图片

0

6个回答

#include #include using namespace std;const int seasons = 4;const char* sname[seasons] = {"Spring","Summer","Fall","Winter"};struct cash{ double pa[seasons];};void fill(cash* a);void show(cash b);int main(){ cash c ; fill(&c); show(c); system("pause"); return 0;}void fill(cash* a){ for(int i=0;i> a->pa[i]; }}void show(cash b){ double total=0.0; cout << "\nEXPENSES\n"; for(int i=0;i < seasons;i++) { cout << sname[i] << ": $" << b.pa[i] << endl; total +=b.pa[i]; } cout << "Total Expenses: $" << total << endl;}

0

函数参数不用指针,那么修改结构体内容是修改的副本,函数返回后,还是原来的值

0

不用指针,你也可以用引用。

0

因为如果不用指针或者引用的话,你值传过去后只是把值传过去了,而实参是不会受影响的,当用了指针就是把地址传过去了,形参和实参就是一个东西了,改形参就是改实参。引用也差不多一个道理

0

考虑下引用&,不然就必须要指针了,呵呵呵

0

结构是值类型的,不能按引用传递

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如果函数传递的是结构体,小心在调用的参数中给指针重新赋值(拿tm结构体举例)
如果函数返回的是结构体,如下函数的tm_Compile_time                             INT32 comptime;                             CHAR compiletime[64];                             struct tm comparetime;                   ...
结构体和结构体指针作为参数传递
参考链接:https://blog.csdn.net/jin13277480598/article/details/48226349 结构体和结构体指针作为参数传递其实也是比较好理解的,因为之前我们应该学习过地址传参数的问题,其实是一样的,主要优点是地址比传递整个结构体快,具体可参考链接 结构体作为参数传递: #include&amp;lt;iostream&amp;gt; #include&amp;lt;cst...
结构体内指针变量的赋值
问题描述  某结构体的定义如下: typedef struct {     int     iAge;                // 年龄     char    szAddr1[100];        // 地址1     char   *pszAddr2;            // 地址2     char  **pszAddr3;            // 地址3 } T_Pe...
结构体指针赋值
//方法1:可以给p分配一段内存空间,并使其指向此空间: #include main() { struct abc{ int a;}; struct abc *p; p=(struct abc *)malloc(sizeof(struct abc));p->a = 1; printf("%d\n",p->a); } //方法2:可以让p指向一个已存在的内存空间:#i
为结构体中函数指针赋值的两种方法
/** 02. * 为结构体中的指针数组赋值 03. */ 04. 05.#include 06. 07.typedef struct test 08.{ 09. void (*p)(void); 10. void (*q)(void); 11. void (*y)(void); 12.}test; 13. 14.void f1(
结构体指针的使用(二级)
#include #include typedef struct node{ int data; int data1; }*link,tree; int main() { int i; tree *p1; link p2; link *p3; p1 = (link)malloc(sizeof(tree)); p2 = (link)
结构体中指针成员的动态分配
示例1:typedef struct _a{ int type; char dat[1]; }A;int main(void) { char* ptr = "hello_world"; A *a = malloc(sizeof(A) + strlen(ptr) + 1); memcpy(a->dat, ptr, strlen(ptr) + 1)
KEIL MDK 中 “.”与“->”的区别,结构体及类提示的有效性
“-&amp;gt;”表示前边是指针指针,如结构体指针,现在要提取右、后边的成员 “.”表示前边是变量实体,如结构体,现在要提取后边的成员 如: struct a_t { int a; }; struct a_t dis; struct a_t* pDis = &amp;amp;dis; dis.a = 12345; printf(&quot;%d, %d\n&quot;, pDis-&amp;gt;a, dis....
含有指针成员的结构体使用总结
在C++中经常用到结构体和指针,当定义一个结构体,结构体成员中有指针的时候,需要注意很多。一下分为:结构体初始化、结构体作为函数参数、函数返回值、以及结构体指针的情况进行总结。 一、含有指针成员的结构体初始化 含有指针成员的结构体初始化的时候,必须给指针成员给一个明确的地址。注意:给指针成员初始化的时候,要么给其一个地址,比如是数组数组地址的时候,就可以通过指针来操作数组,也可以一个变量的地址
结构体变量和结构体指针变量作为函数参数传递的问题
/* 2015年8月28日13:20:28 通过函数完成对结构体变量的输入和输出*/# include &amp;lt;stdio.h&amp;gt;# include &amp;lt;string.h&amp;gt;struct Student{ int age; char sex; char name[100];}; //分号不能省void InputStudent(struct Student *);void Output...
结构体中指针赋值问题的分析及C代码示例
本文对结构体中指针赋值问题进行了分析,并用C代码演示了指针的赋值方法。
结构体指针作为函数参数的应用
一、结构体的多层封装 在头文件中进行声明: typedef struct { char summary[45]; char datetime[20]; char repeat_type[10]; char voice_data_url[125]; char voice_file_id[40]; unsigned char voice_type; }SCHEDULE_IT
结构体变量作为函数参数
推荐使用引用的方式。因为传递的是变量的地址,因而效率较高,并且可读性也高 #include &amp;lt;iostream&amp;gt; #include &amp;lt;string&amp;gt; using namespace std; struct Student { int num; string name; float score[3]; }stu={12345,&quot;Li Li&quot;,67.5...
当结构体中有指针成员时
先上代码:#include <iostream> using namespace std;struct example { int iNum; char* cNum; }; int main() { example struct1,struct2; char c = 'a'; struct1.iNum = 1; struct1.cNum
C++类 给结构体成员 函数指针 赋值
myStruct头文件 myStruct.h class CMyClass; struct {  int nFlag;  void (CMyClass::*myinit)(int n);  void (CMyClass::*myopen)(int n,void* arg);  void (CMyClass::*myclose)(int);  ... }myStruct;
结构体、结构指针作为函数参数
- 结构体、结构指针作为函数参数1.简介 结构体,结构体指针作为函数的参数现在应用的非常广泛,但一些细微 之处还需要引起注意。本文将讨论其作为形参和实参的区别。2.结构体作为参数 将结构体作为函数的参数,我们的目的是通过makeinfo()函数调用去改变person 结构体中letters的值。 情形1:#include<stdio.h> #include<strin
C语言结构体内含有数组,该结构体作为参数传递时需用指针,否则对数组的修改不会被记录
在C语言编程时,常常会定义结构体,而且结构体里面常常会有数组,比如如下所示: typedef struct  { int data[MAX_HEAP_SIZE]; unsigned int heap_size; }HeapType;     这是一个堆的数据结构,包含堆的元素(数组)和堆的大小。在建大顶堆时会给建堆的函数传递参数,建堆函数如下: void Build_Max_He
函数指针在结构体中的赋值方法
一、 定义了一个结构体 struct abc{ int (*a)(); int (*b)(); int (*c)(); }; 要给这些函数指针成员赋值 struct abc abcd={ .a=fun1, .b=fun2, .c=fun3, }; 二、 #include
c语言:通过指向结构体变量的指针变量输出结构体变量中成员的信息
通过指向结构体变量的指针变量输出结构体变量中成员的信息。解:程序:#include#includeint main(){struct Student{long int num;char name[20];char sex[10];float score;};struct Student stu_1;//定义struct Student类型的变量stu_1struct Student *p;p =
结构体增加了一个成员后,运行时莫名死机的疑惑
<br />     最近感觉真的是怪事多多,上次为了修改一个结构休的定义,直接在里面增加了一个int成员变量,后来运行的时候,却奇怪地死机了。搞了半天,以为是什么地方搞错了,后来把这个新增的成员屏蔽了,奇迹般的不死了。这是为何?增加一个成员,又没有任何地方引用它,为何死机?后来在另一个同事机器上也做了同样的实验,也是死机了。<br />     加上这个成员,后来开始调试,在监视窗口中,发现这个结构的对象里面根本没有这个字段,这是什么?不死才怪呢。这个或许应该是开发工具的bug吧(PS:Visual st
结构体指针作为函数参数传递却无法传值的有关问题
今天做C++作业遇到一个问题,需要
c 结构体中存在指针,指针的不同赋值方法
#include#include#includestruct parameter{ char *fd; int hit;};int main() { struct parameter*pptr = (struct parameter*)malloc(sizeof(struct parameter)); memset(pptr, 0, sizeof(struct parameter)); //ppt
正确使用指针(指针作为输出型参数)与结构体指针作为函数参数
一个问题是,我们想用一个函数来对函数外的变量v进行操作,比如,我想在函数里稍微改变一下这个变量v的值,我们应该怎么做呢?又或者一个常见的例子,我想利用swap()函数交换两个变量a,b的值,我们应该怎么做呢(好吧,博主是觉得这个问题十分经典)。 如果你真的理解【函数】这个工具的本质,我想你稍微仔细的思考一下,可能就不会来查看博主的这篇文章,对函数来说,它所传递的任何参数仅仅是原来参数的一个拷贝,...
指向结构体的指针&结构体成员指针
1、指向结构体的指针 一个 变量的指针,就是该变量所占据的内存段的起始地址。指向一个结构体的指针变量,其值是结构体变量的起始地址。 /* *copyright(c) 2018,HH *All rights reserved. *作 者:HH *完成日期:2018年8月17日 *版本号:v1.0 * *问题描述:指向结构体变量的指针的应用 *输入描述:; *程序输出: */ #includ...
利用结构体作为函数参数时结构体指针的定义
在利用结构体作为函数的参数进行传递时,容易犯的一个错误是将一个野指针传给函数导致错误。 #include #include #include #define MAXSIZE 10 typedef struct { int r[MAXSIZE]; //用于存储要排序的数组,r[0]作为哨兵或者临时变量 int length; //用于记录顺序表的长度 }Sq
【C】结构体指针的使用必须初始化,其他变量定义对象时会赋0.
先说结论 结构体指针需要初始化   结构体指针的成员指针同样需要初始化     结构体变量定义的时候就已经分配了内存空间,而上面两个确没有  struct test{ int i; struct buf *p; } aa; //定义结构体aa struct buf{ char data[512]; struct buf *prev; struct buf *next; } ; 对象t定...
如何正确使用指针(指针作为输出型参数)与结构体指针作为函数参数
如何正确使用指针(指针作为输出型参数)与结构体指针作为函数参数 外部定义一个结构体类型指针变量,使用##结构体指针里面的内嵌指针,返回值,双重指针##方式进行地址传递
函数参数调用指针、结构体
一、函数调用指针时 void main(void) { int a,int b; a=5; b=3; fun(&a,&b); } void fun(*p1,*p2) { int c; c=*p1; *p1=*p2; *p2=c; } 1、此时函数声明参数是两个指针,因此主函数中函数的调用参数应该输入两个指针,就是a,b的地址。 2、再次强调,需要改变输入参数的值时函
对结构体中的字符串指针数组赋值
#include &amp;amp;lt;stdio.h&amp;amp;gt; #include &amp;amp;lt;stdlib.h&amp;amp;gt; typedef struct student { char name[20]; char num[20]; char *str[3]; }STU,*PSTU; int main(void) { int i; STU s; //...
关于结构体成员变量用 . 还是 ->
之前一直认为引用结构体成员,指针的话用 -&amp;gt; ,成员变量的话用 . 。但是一直都没去深究过,今天遇到一个复杂的,决心去了解一下。 typedef struct _IPC_ISP_CFG_DATA { IPC_ISP_CTRL stDefaultCtrl; IPC_ISP_PARAM stParam; IPC_ISP_CAP stCap; IPC_ISP_C...
结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析 .
结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析  struct stud {  long int num;   float score; }; /*结构体变量作为函数的参数,修改之后的成员值不能返回到主调函数*/ void funvr(struct stud t) {  t.num=2000101; t.score=71.0;  } /*结构体数组作为函数的参数,
C语言结构体里的成员数组和指针(C语言的一个隐晦角落——关于零数组)
C语言结构体里的成员数组和指针(关于零数组) 【转自酷壳网:http://coolshell.cn/articles/11377.html  作者:陈皓】 单看这文章的标题,你可能会觉得好像没什么意思。你先别下这个结论,相信这篇文章会对你理解C语言有帮助。这篇文章产生的背景是在微博上,看到@Laruence同学出了一个关于C语言的题,微博链接。微博截图如下。我觉得好多人对这段代码的理解还不
结构体中访问成员点操作符和箭头操作符的区别
相同点:两个都是二元操作符,其右操作符是成员的名称。   不同点:点操作符左边的操作数是一个“结果为结构”的表达式;                 箭头操作符左边的操作数是一个指向结构的指针。   举例说明: #include   Song_t  song1,song2,                        //两个Song_t类型的对
结构体指针初始化以及结构体中成员变量是指针的初始化
#pragma pack(1) #pragma pack(push) ///保存对齐状态 #pragma pack(1)    //设定为1字节对齐 typedef struct ProtocolV2 {     Unit8 uHead1;      //包头1     Unit8 uHead2;      //包头2     Unit8 uToken ;     //令牌   
普通函数指针、成员变量指针与成员函数指针
普通函数指针、成员变量指针与成员函数指针(一)普通函数指针首先先说普通函数指针,对于函数指针总是与指针函数混淆,那么他们的区别在哪呢?1、指针函数 int* f(int a;int b)  //函数名为f,返回值为int类型的指针简单来说,就是指针函数就是返回一个地址给调用者,用于需要地址的情况。2、函数指针int (*f)(int a, int b); // 声明函数指针其实就是函数指针的函数名...
结构体指针访问成员
/结构体指针访问成员/ #include&amp;lt;stdio.h&amp;gt; struct Student { int num; char name[20]; float score; }; int main() { //1. //该种方法用指针指向一个结构体,使用时p-&amp;gt;成员名 /struct Student p; struct Student stu1={001,“zb”,90.5}; p=...
keil中对struct结构体静态赋值导致代码急剧膨胀的原因(转)
typedef struct { unsigned int flag; char data[1024]; } wireless, *pwireless;wireless g_wirless_ch1;void Main(void) { } 如上代码生成的hex内容 :0400000500000000F7 :020000040000FA :040000001EFF
为什么结构体/类中,成员变量可以初始化不可以赋值?
类内部成员的初始化 在C++98标准里,只有static const声明的整型成员能在类内部初始化,并且初始化值必须是常量表达式。这些限制确保了初始化操作可以在编译时期进行。例如: int var = 7; class X { static const int m1 = 7; // 正确 const int m2 = 7; // 错
用结构体类型的数据作函数参数
2018年4月5日   19:201.用结构体变量作函数参数:运行结果:用结构体变量作实参时,采取的也是“值传递”方式,将  结构体变量所占的内存单元的内容(结构体变量成员列表)    全部顺序传递给形参,这里形参也得是结构体变量。但是,这种传递方式下,函数调用期间形参也要占用内存单元(个人理解意思就是 跟要传递的实参一样,系统也要给形参分配空间。)。并且,这种传递方式是单向的,如果在执行被调函数...
C++中的结构体指针作为函数参数,不会修改实参的值的问题。
最近博主在学c++,琢磨着用c++写个排序二叉树,被c++蹩脚的语法折腾得不要不要的,最要命的地方就是我将main函数里面的结构体传递给函数的时候,在函数里面做的修改不会使得main函数里的实参也变化,见鬼了,讲道理不是指针传递会修改的吗,经过一番折腾之后博主发现,当结构体指针传递给函数时,会拷贝一份指针的值,但是函数内部的指针和函数外部的指针并不是指向同一个引用的,所以才会使得函数里面改变了,但...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 大数据培训有用么 云计算难学么