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

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

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;}

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

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

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
结构体成员不能互相赋值么?
我遇到这个问题rn struct PhoneRecordrn char name[8];rn char PhoneNum[20];rn ;rn................... rn 在头文件中定义 rn PhoneRecord Array[100];rn ...............rn PhoneRecord Array2[100];rn for (int index=0;index<100;index++)rn rn Array2[index].Name=Array[index].Name; //提示不能这样写rn Array2[index].PhoneNum=Array[index].PhoneNum;rn
函数参数调用指针、结构体
一、函数调用指针时 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、再次强调,需要改变输入参数的值时函
关于结构体成员赋值
头文件中有一个结构体rn[code=C/C++] struct Coordinatesrn rn short xA_To, yA_To;rn short xA_Destination, yA_Destination;rn short xA_Phone, yA_Phone;rn short xA_CompanyName, yA_CompanyName;rn short xA_Address, yA_Address;rn short xA_Province, yA_Province;rn short xA_City, yA_City;rn short xA_Town, yA_Town;rn short xA_CITY, yA_CITY;rn short xA_PostalCode, yA_PostalCode;rn short xC_From, yC_From;rn short xC_Departure, yC_Departure;rn short xC_Phone, yC_Phone;rn short xC_CompanyName, yC_CompanyName;rn short xC_Address, yC_Address;rn short xC_Province, yC_Province;rn short xC_City, yC_City;rn short xC_Town, yC_Town;rn short xC_PostalCode, yC_PostalCode;rn short xU_Hook, yU_Hook;rn short xU_String, yU_String;rn short xU_Double, yU_Double;rn short xU_Y, yU_Y;rn short xU_M, yU_M;rn short xU_D, yU_D;rn short xU_H, yU_H;rn ;[/code]rn定义了rnCoordinates MoveXY;rn程序在执行到某个函数时会循环得到一些数据.rn我想让这个结构体能象数组那样自加或自减,那样就不用使用switch了.(数据成员有点多)rn请问有什么办法没?谢谢!
结构体成员赋值问题
struct PicDataStruct//我自己定义的结构体rnrn int width;rn int height;rn int widthstep;rn BYTE* pData;rn;rnrnIplImage* pWeight_Destiny//这里面有图像相关数据rnrn下面是出问题的赋值语句:rnrnWeight_DestinyD.width = pWeight_Destiny->width;rnWeight_DestinyD.height = pWeight_Destiny->height;rnrn[color=#FF0000]运行结果如下:可以发现width和height的值错位了,对应不上,求解这是为什么?[/color]rnrn[img=http://img.my.csdn.net/uploads/201301/14/1358145442_1509.jpg][/img][img=http://img.my.csdn.net/uploads/201301/14/1358145454_3745.jpg][/img]rn
结构体变量及成员作为函数参数
-
结构体变量的成员作为函数参数
尹成老师,带你步入 C 语言的殿堂,讲课生动风趣、深入浅出,全套视频内容充实,整个教程以 C 语言为核心,完整精彩的演练了数据结构、算法、设计模式、数据库、大数据高并发检索、文件重定向、多线程同步、进程通讯、黑客劫持技术、网络安全、加密解密,以及各种精彩的小项目等,非常适合大家学习!
指向结构体的指针&结构体成员指针
1、指向结构体的指针 一个 变量的指针,就是该变量所占据的内存段的起始地址。指向一个结构体的指针变量,其值是结构体变量的起始地址。 /* *copyright(c) 2018,HH *All rights reserved. *作 者:HH *完成日期:2018年8月17日 *版本号:v1.0 * *问题描述:指向结构体变量的指针的应用 *输入描述:; *程序输出: */ #includ...
传递结构体成员的指针
本可称为C语言基础课程,讲解C语言基础入门知识。rn本课程是介绍C语言的基础知识,针对所有对计算机体系结构和嵌入式知识感兴趣的学员。
结构体、结构指针作为函数参数
结构体、结构指针作为函数参数 结构体、结构体指针作为函数的参数现在应用的非常广泛,但一些细微之处还需要引起注意。本文将讨论其作为形参和实参的区别。 结构体作为参数 将结构体作为函数的参数,目的是通过makeinfo()函数调用去改变person结构体中letters的值。 情形1: #include&lt;stdio.h&gt; #include&lt;string.h&gt; st...
使用指针访问结构体成员2
课程内容:为什么需要结构体、定义一个结构体类型、结构体变量的声明和定义、sizeof测试结构体变量字节、结构体成员的普通访问方式、使用指针访问结构体成员、结构体嵌套、结构体传参、结构体数组。
使用指针访问结构体成员1
本可称为C语言基础课程,讲解C语言基础入门知识。rn本课程是介绍C语言的基础知识,针对所有对计算机体系结构和嵌入式知识感兴趣的学员。
含有指针成员的结构体使用总结
在C++中经常用到结构体和指针,当定义一个结构体,结构体成员中有指针的时候,需要注意很多。一下分为:结构体初始化、结构体作为函数参数、函数返回值、以及结构体指针的情况进行总结。 一、含有指针成员的结构体初始化 含有指针成员的结构体初始化的时候,必须给指针成员给一个明确的地址。注意:给指针成员初始化的时候,要么给其一个地址,比如是数组数组地址的时候,就可以通过指针来操作数组,也可以一个变量的地址
关于给结构体成员赋值
struct playerrnrn char name[20]rn[color=#FF0000]player1="palle"; // 这里直接赋值Ok.rnrnplayer1.name="palle"; // 如果成员是字符型数组想给赋字符串这样子就不行rnrn请问如何解决?[/color]
结构体变量赋值及成员引用
#include&amp;lt;stdio.h&amp;gt;#include&amp;lt;string.h&amp;gt;struct  person{ char name[12]; int age; char sex; float height; float weight;};int main(void){ struct person p1={&quot;ZhangSan&quot;,18,'M',1.75,70.5},p2,p3; prin...
有关结构体成员赋值的问题
以下是整个程序中的部分代码:rnvoid loaddata()rn 37 rn 38 struct data bufdata;rn 39 int i=0;rn 40 while(feof(fp2)==0) //将数据文件中的内容循环加在到链表中rn 41 rn 42 if(fread(&bufdata,sizeof(struct data),1,fp2)!=1)rn 43 rn 44 if(feof(fp2)!=0)rn 45 rn 46 if(i==0)rn 47 rn 48 printf("归属信息丢失!!");rn 49 rn 50 if(i==1)rn 51 rn 52 printf("该用户未存储过任何信息!!");rn 53 rn 54 break;rn 55 rn 56 printf("ERROR!!读取失败!!");rn 57 exit(1);rn 58 rn 59 p=(struct data *)malloc(sizeof(struct data));rn 60 if(i==0)rn 61 rn 62 head=cauda=p;rn 63 p->name = bufdata.name;rn 64 p->id = bufdata.id; //注意这里ID等于0rn 65 rn 66 elsern 67 rn 68 p->last=cauda; //将新节点的last指针指向上一节点的入口rn 69 cauda->next=p; //将上一节点的next指针指向新节点rn 70 p->name = bufdata.name;rn 71 p->id = bufdata.id;rn 72 p->tel = bufdata.tel;rn 73 p->sex = bufdata.sex;rn 74 cauda=p; //将尾节点更新至新节点rn 75 rn 76 i++;rn 77 rn 78 rn在编译时63、70、72、73行GCC提示赋值时类型不兼容。rn64、71行没有出现类型问题,结构体中id我定义的是int型,name、tel、sex我都定义的是char型rn请问为什么会出现类型兼容性问题?
给结构体成员赋值不成功
typedef struct rn unsigned char R;rn unsigned char G;rn unsigned char B;rn DmtxPixel;rnrntypedef struct rn unsigned int width;rn unsigned int height;rn DmtxPixel *pxl;rn DmtxImage;rnrnDmtxImage image;rnrnfor (int i=0;iR=255;rn image.pxl->G=255;rn image.pxl->B=255;rn rn elsern rn image.pxl->R=0;rn image.pxl->G=0;rn image.pxl->B=0;rn rn rn下面这个循环在执行的时候,第一次进入,程序就一直在运行不知道跑到哪去了,请大家帮忙看看!rn现在没银子了,对不起了!
关于结构体成员的直接赋值
#include #include struct student { char id[11]; char name[20]; char score[3]; char email[30]; int age; }; int main() { student ming; ming.age = 16; //结构体成员为数组时进行单独赋值。 //第零种方法,字符串赋值。
结构体里的成员数组和成员指针
struct test{ int i; char *p; }; struct test *str; int a = 1; char *b = "ioiodddddddddddd"; str = (struct test *)malloc(sizeof(struct test));//结构体指针不为null str-&gt;i = a; ...
求助!!!释放结构体的指针成员
有如下结构体定义rn[code=C/C++]rnstruct node rn char *time;rn char *protocol;rn char *port;rn char *ip;rn char *interface;rn char *macaddr;rn struct node *next;rn;rntypedef struct node *Node;rntypedef Node LIST;rnint node_size = sizeof(struct node) - sizeof(void *);rn[/code]rn现在我用一个接口去填充这个结构体,输入是对应结构体成员的字符串,接口实现如下:rn[code=C/C++]rnint get_next_field(const char *ostr, char symbol1, char symbol2, char *sfield)rnrn if (!ostr || !sfield) return -1;rn rn char *pos;rn rn if (!(pos = strchr(ostr, symbol1)) && !(pos = strchr(ostr, symbol2)))rn return -1;rn memcpy(sfield, ostr, pos - ostr);rn rn return pos - ostr + 1;rnrnrnint fill_in_node(const char *ostr, char divflag, char endflag, Node P)rnrn int curpos, parsed, cur_offset;rn char *ori_pos;rnrn curpos = parsed = cur_offset = 0;rn ori_pos = (char *)P;rn rn for(; cur_offset < node_size; cur_offset += sizeof(char *)) rn char *tmp;rn rn if (!(tmp = (char *)malloc(32)))rn return -1;rn memset(tmp, 0, 32);rn parsed = get_next_field(ostr + curpos, divflag, endflag, tmp);rn memcpy(ori_pos + cur_offset, &tmp, sizeof(char *));rn curpos += parsed;rn rn return curpos;rn[/code]rn到这步都没有问题,当我要释放结构体中这些指针成员的时候free()出错了。释放代码如下rn[code=C/C++]rnvoid free_node(Node p)rnrn int offset;rn char *ori_pos;rn rn ori_pos = (char *)p;rn rn for (offset = 0; offset < node_size; offset += sizeof(char *)) rn free(ori_pos + offset);rn rnrnrnvoid free_list(LIST L)rnrn Node p, q;rn rn p = L;rn rn while (p) rn q = p->next;rn free_node(p);rn p = q;rn rn[/code]rn我是个新手,高手们帮我看看错在哪里啊?谢谢了
结构体成员为指针的问题
[code=C/C++]rn#include rnrnstruct S rn int i ;rn int *p;rn;rnrnint main(int argc, char* argv[])rnrnrn S s;rn int *p=&s.i;rn p[0]=4;rn p[1]=3;rn s.p=p;rn s.p[1]=1;rn s.p[0]=2;//为什么这句有问题呢?rn return 0;rnrn[/code]rnrns.p[0] = 2 会出现崩溃 为什么呢 ??
指针如何引用结构体中结构体的成员
[code=C/C++]rn#includernusing namespace std;rnstruct birthdayrnrn int year;rn int month;rn int day;rn;rnstruct personrnrn int age ;rn struct birthday;rn rn;rnrnint main ()rnrnstruct person *p ;rnstruct person A;rnp=&A ;rncin>>p->birthday.year;rncin>>p->birthday.month;rncin>>p->birthday.day;rncin>>p->rncout<<"----------出生信息-------------"<birthday.year;rncout<birthday.month;rncout<birthday.day;rncout<age;rnreturn 0;rnrnrn[/code]rnrn出错信息:rn标记“.”在 UDT“person::birthday”之后是非法的rn“.month”的左边必须有类/结构/联合rnrn指针如何 引用 结构体中的结构体的成员?rn
结构体中指针成员的动态分配
示例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)
初学——结构体成员指针问题
定义了一个结构体,如下:rntypedef struct array rnrn signed int * elem;rn signed int length;rn signed int listsize;rnrnSqList;rnrn在函数status ListInit(SqList * pointer)中对elem指针进行了内存开辟,rn在下列函数中进行赋值操作,rnstatus ListMerge(SqList * la,SqList * lb,SqList * pc)rnrn signed int * a_last,* b_last,i=0;rnrn a_last=la->elem+la->length-1;rn b_last=lb->elem+lb->length-1;rnrn while(la->elem<=a_last && lb->elem<=b_last)rn rn if( * la->elem < * lb->elem)rn pc->elem[i++]=* (la->elem++);[color=#FF0000]//用* pc->elem++=* (la->elem++);为什么不可以呢?问题描述如下。[/color]rn elsern pc->elem[i++]=* (lb->elem++);[color=#FF0000]//为什么此处只用数组下标形式赋值,而用* (pc->elem++)=* (lb->elem++);形式不能改变pc->elem值呢?[/color] rnrn return OK;rnrn出现问题,在注释中的地方,为什么用数组下标形式访问后在main函数中才能成功访问赋值后的LC->elem新值,而用* (pc->elem++)=* (lb->elem++);形式访问后在main函数中LC->elem的值却没成功呢?
【结构体指针】结构体指针和结构体成员指针
    struct WARNING_FLAG           //报警 {   unsigned int Weight;             //吊重   unsigned int Moment;                   //力矩   unsigned int Hight;                //高度   unsigned int Span...
当结构体成员为指针
该课程为“C语言及程序设计”系列课程中的第三部“进阶篇”。作为终结篇C语言教程,介绍了在实际应用中应用广泛的结构体数据表示和处理、利用文件进行输入输出、利用多文件组织项目开发,并结合对程序设计的进一步学习需求,概述数据结构及其选择问题和问题求解方法。以实践为主线的学习将继续,“银行储蓄系统”的开发将会迭代到第5版和第6版。
有关结构体变量成员作为函数参数的一些问题
rn[code=c]#define LEN 20rnrnstruct names rn char first[LEN];rn char last[LEN];rn;rnrnstruct pnames // 结构体本身只储存了两个地址, 32位系统中共占8个字节rn char * first;rn char * last;rn;[/code]rnrn如下代码, 当我取消注释(已注释的)struct user 部分 改为注释上面的struct user 编译输出后出现显示乱码 想问下这是什么原因? 是跟 堆、栈有关吗 rnrn[code=c]#includern#includernrnstruct userrnrn char * name;rn char * email;rnrn;rnrn//struct user rn// rn// char name[40]; rn// char email[30];rn//rn//;rnrnvoid show3(struct user data[5], int n)rnrn for (int i = 0; i < n; i++)rn rn printf("%s,%s,%s\n", data[i].name, data[i].email);rn rnrnrn//调用指针改变结构体变量(2)rnvoid change3(char *changep)rnrn *changep = "gaibianhou2";rnrnrnrnvoid main()rnrn //创建一个结构体数组并对他初始化rn struct user data[5] = rn "lupower","lu_power@126.com" ,rn "ycfan","fanyunchun@hotmail.com" ,rn "mxeler1","yejinlong@myce.net.cn" ,rn "ednashe83","ednashe83@hotmail.com" ,rn "fjcljt","chengyong702@126.com" ,rn ;rnrn show3(data, 5);rnrn change3(&data[0].name);rnrn printf("%s,%s,%s\n", data[0].name, data[0].email);rnrnrn getchar();rnrnrnrn[/code]
c语言结构体成员作为函数参数
#include #include struct Worker{ char name[10]; char num[8]; }; void Sort(struct Worker wk[]){ //排序函数 struct Worker temp; for(int i=0;i<5;i++){ int k = i; for(int j=i+1;j<5;j++){ if(
8、结构体变量及成员作为函数参数
C语言基础13-14天。其中包括预处理与结构体。
6 结构体变量的成员作为函数参数
尹成老师带你步入C语言的殿堂,讲课生动风趣、深入浅出,全套视频内容充实,整个教程以C语言为核心,完整精彩的演练了C语言操作流程以及各种精彩的小项目等,提高竞赛能力,非常适合同学们学习!
C++成员指针无法赋值
[code=c]rnclass Imagernrnpublic:rn int* getA()return a;rn Image& operator=(const Image&r); rnrnrnprivate:rn int* a;rnrnrnImage& operator=(const Image&r)rn a = new int;rn *a = 23;rnrnrnrnvoid main()rn Image lena("lena.bmp");rnrn Image lena1 = lena;rn int* b = lena1.getA();rn cout << *b;rnrnrnrn[/code]rnrn这是部分代码,运行后,指针b无法赋值啊,为什么呢?
类内指针成员赋值
class sound_varsrnrn protected:rn static s8 *mixBufferBase;rn static s8 *curMixBuffer;rn static u32 mixBufferSize;rn u16 mixFreq;rn u16 rcpMixFreq;rn s16 samplesUntilMODTick;rn u16 samplesPerMODTick;rn static u8 activeBuffer;rn public:rn static void SndVSync();rn void vars_init(SND_FREQ freq);rn void vars_mix(s16 *buffer, u32 *i, u32 samplesToMix);rn void vars_Tempo(u32 tem);rn u16 get_rcpMixFreq();rn;rnu32 sound_vars::mixBufferSize = 0;rns8 sound_vars::*mixBufferBase = 0;rns8 sound_vars::*curMixBuffer = 0;rnu8 sound_vars::activeBuffer = 0;rnrnrns8 sndMixBuffer[736*2];rnrn void sound_vars::vars_init(SND_FREQ freq)rn rn // initialize main sound variablesrn mixBufferSize = freqTable[freq].bufSize;rn mixBufferBase = sndMixBuffer; //(1)rn curMixBuffer = mixBufferBase; //(2)rn activeBuffer = 1; rnrn mixFreq = freqTable[freq].freq;rn rcpMixFreq = (1<<28)/mixFreq;rn rnrnmakefile在生成obj文件时,报错rnmain.o(.text+0x170): In function `sound_vars::vars_init(SND_FREQ)':rn: undefined reference to `sound_vars::curMixBuffer'rnmain.o(.text+0x174): In function `sound_vars::vars_init(SND_FREQ)':rn: undefined reference to `sound_vars::mixBufferBase'rnrn问题应该出在标注(1)和(2)的两个地方,有高人能帮忙解决一下吗,谢谢。 rnrnrn说明:本人在做GBA上的MOD音乐播放器,有这方面编程经验的人士能给予一些帮助或留下联系方式,谢谢。rn本人QQ:106611034rnMSN:ndq880815@hotmail.com
结构体成员指针赋值在debug模式下没有问题,release模式下崩溃
在头文件A中定义:rnA.Hrn[code=c]rntypedef structrnrnint *m_int;rndouble *m_d;rnstruc;[/code]rn然后在B.CPP中包含rn[code=c]rnB.CPPrninclude “A.H”rnrnvoid funrnrnrnstruc.m_int=new int(number);rnstruc.m_d=new double(number);rnfor(int i=0;i
结构体对象成员的使用
[code=c]/*rn习题5 边缘填充算法rn(1,1),(2,3),(3,2),(4,6),(6,4),(7,5),(7,1)rny∈[1,6],x∈[1,7]rn*/rnrn#includern#include rn#include rn#include rnrn#define Bcolor GREENrn#define BKcolor YELLOWrnrntypedef structrn//定义点的结构体类型rn int x;rn int y;rn// int x=0,int y=0):x(x),y(y)rnpoint;rnrn//static point p[8]=point(1,1),……;rnstatic point p[8]=1,1,2,3,3,2,4,6,6,4,7,5,7,1,1,1;rn//将点存储在数组中,首个点出现两次,便于最后一条的连接rnrnint main()rnrn int driver,mode;rn driver=DETECT;rn initgraph(&driver,&mode,"");rn setbkcolor(BKcolor);//1 为啥传数字不管用,传啥都是黑的rn cleardevice();rn;rn int outline();rn outline();rn printf("%d",p[0].x);rnrn int full();rn full();rn getch();rn closegraph();rn return 0;rnrnrnint outline()rn//边缘轮廓rn setcolor(Bcolor);rn for(int i=0;iabs(dy))rn //看x和y的变化量的绝对值哪个大rn epslon=abs(dx);rn rn elsern rn epslon=abs(dy);rn rn x_step=(float)dx/(float)epslon;//因为出现了分数,可能出现小数rn y_step=(float)dy/(float)epslon;rn for(int i=0;iEdge)rn rn Edge=p[i].x;rn rn rn /*rn for(遍历边缘线段)rn {rn for(在线段上下范围内?是,x++){rn 确定交点rn 从该交点开始,到方形边界从左向右填充像素点(x,y)_关于像素原色取补rn }rn }rn */rnrnrn for(i=0;iy1)rn //以y为参照,保证(x0,y0)在(x1,y1)的下面rn y0=y0^y1;rn y1=y0^y1;rn y0=y0^y1;rnrn x0=x0^x1;rn x1=x0^x1;rn x0=x0^x1;rn rn dx=x1-x0;rn dy=y1-y0;rn x=x0;rn y=y0;rn epslon=abs(dy);rn x_step=(float)dx/(float)epslon;//步长1/f'(x)rn y_step=(float)dy/(float)epslon;//步长1rn for(int i=0;i
结构体成员的使用:指针变量
本课程通过8天时间从基础开始学习GO语言,精细化讲解GO语言的知识,并使用实例贯通了知识的使用
关于函数参数指针的使用
varrnFS:TfileStream;rntempstream:tmemorystream;rnbuffer:array of byte;rnbeginrnrn FS:=tfilestream.Create('123.tmp',fmOpenReadWrite or fmShareDenyNone);rnrn tempstream:=tmemorystream.Create;rn rnfs.Position:=0;rn rntempstream.CopyFrom(fs,0);//把123.tmp全部拷贝到内存流rn rnsetlength(buffer,2048);rn rnZDecompress(tempstream,1024,pointer(buffer),2048);// 1024 2048指大小,假设123.tmp压缩前是2048 压缩后是1024,调用 ZDecompress解压缩rn rntempstream.write(buffer,2048) ;//解压缩后的数据流存入tempstreamrnrn。。。。。rnrnrn这里是zlib的ZDecompress原型rnprocedure ZDecompress(const inBuffer: Pointer; inSize: Integer;rn out outBuffer: Pointer; out outSize: Integer; outEstimate: Integer = 0);rnrn我想利用zlib的ZDecompress把123.tmp进行解压然后保存解压后的文件,关键是这个ZDecompress不知道怎么用,rnrn我上面的代码肯定是错的,请问该怎么修改啊,最近被指针搞得要死,谢谢大家
结构体变量或指针作为函数参数12.4-5
<p>rn C语言是非常流行的高级编程语言之一,是很多同学的入门编程语言,是建立编程思想的基础课程。rn</p>rn<p>rn 本视频课程是配合学生在学习了基本的理论课程的同时,进行编程实践,帮助初学者有效的进行上机实践,视频主要通过实例编程讲解C语言。rn</p>rn<p>rn 该课程适合学生在课堂学习了基本的理论后再进行实践学习。rn</p>
指向结构体的指针作函数参数问题
#include rnstruct student rnrn int num;rn char name[20];rn char sex ;rn int score; rnstu=1,"li lin",'M',90;rnvoid main()rnrnrn struct student *a;rn a=&stu;rn void print(struct student *);rn print(a);//不可以rn //print(&stu);可以rnrnvoid print(struct student *p)rnrn printf("%d %s %c %d",p->num,p->name,p->sex,p->score);rn rn为什么会错?
结构体元素做函数参数和结构指针做函数参数
#include "stdio.h" #include #include //定义类型的三种方法 typedef struct T2 { char *name; int age; int score; } T2; ////////////////////////////////////////////////////// //错误模型拷贝完成和结构体完全无
字节对齐不同造成结构体成员赋值失败
我们知道,C编译器在编译32位机目标代码时,默认将变量存储的地址按照4字节进行对齐。 在使用结构体时,由于字节对齐的原因可能会造成存储空间的浪费 例如: struct AA{     char a;     int b;     char c;  }aa 结果,sizeof(aa)=12。成员a与b之间空出了3个空字节,成员c也后也空出了3个字节。 这个时候虽然内存空
如何给结构体成员赋值问题
#include rnrnint main()rnrn struct studentrn char name[20];rn int score;rn ;rnrn struct student st="John",100,*ptr;rn // student st="John",100,*ptr;rn ptr=&st;rnrn printf("ptr->name=%s\n",ptr->name);rnrnreturn 0;rnrnrn 用gcc 4.2编译器无法编译:// student st="John",100,*ptr;,但是用VS08却可以, 是不是编译器问题? rn 另外用gcc 4.2也无法这样编译:st="John",100;是不是只能这样赋值:struct student st="John",100;或者:st.name="John";st.score=100; ?
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview