关于keil5中结构体指针作为函数参数,无法赋值的问题

.H文件中定义结构体如下
typedef struct {
float Distance; /*!< 用厘米测量传感器的距离*/
GPIO_TypeDef* ECHO_GPIOx; /*!< 指向用于 ECHO port /
uint16_t ECHO_GPIO_Pin; /
!< ECHO Pin /
GPIO_TypeDef
TRIGGER_GPIOx; /*!< 指向用于 TRIGGER port /
uint16_t TRIGGER_GPIO_Pin; /
!< TRIG Pin */
} TM_HCSR04_t;

函数申明如下:
uint8_t HCSR04_Init( TM_HCSR04_t HCSR04 , GPIO_TypeDef ECHO_GPIOx, uint16_t ECHO_GPIO_Pin, GPIO_TypeDef* TRIGGER_GPIOx, uint16_t TRIGGER_GPIO_Pin);

float HCSR04_Read(TM_HCSR04_t *HCSR04);

主函数如下:
int main(void)
{
float result=0;
TM_HCSR04_t *HCSR04_1; //定义结构体指针
HCSR04_Init(HCSR04_1,echo_gpio,echo_pin,trig_gpio,trig_pin);//初始化赋值
for(;;)
{
result=HCSR04_Read( HCSR04_1 ); //读值
printf( "length is %f",result );
}
}

编译无错误,就是TM_HCSR04_Init函数中结构体指针作为函数参数无法赋值,如有知晓者,还望不吝赐教,C币不足,万分bao'qian

2个回答

HCSR04_Init 要动态分配内存给 HCSR04_1 指针

TM_HCSR04_t *HCSR04_1 ;这里定义了一个结构体指针,但是没有指向一个结构体的变量,没有一个实体。如果先定义一个结构体变量,再把
这个指针指向它,再向HCSR04_Init()这个函数传递应该可以,我也刚碰到这个问题,才想明白。_

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于结构体指针作为函数参数的问题
如题,结构体指针作为函数参数时,结构体指针指向的必须是全局或者是static的吗?为什么定义的局部结构体变量,在进行参数传递的时候会错呢?然后定义成static就没有问题,费解啊!rndp_mian.hrnrntypedef struct RXPKG_STRUCTrnrn U8 recvbuf[MAX_RECV_BUFLEN];rn U16 recvcnt; rnRXPKGINFO;rnrndp_main.crnrnrnextern bool DPEntry(RXPKGINFO *rxinfo);rnvoid main(void)rnrn RXPKGINFO reinfo;rn RXPKGINFO *reinfoptr;rnrn reinfoptr = &reinfo;rn while(1)rn rn num = fread(re_buffer, 1, 1024, rs485_dev);rn printf("num = %d\n", num);rnrn if(num > 0 )rn rn reinfoptr->recvcnt = num;rn for(int i=0; irecvbuf[i] = re_buffer[i];rn printf(" 0x%x",re_buffer[i]);rn rn DPEntry(reinfoptr);rn rn rnrnrnbool DPEntry(RXPKGINFO *rxinfo)rn rn int i;rnrn for(i=0; irecvcnt; i++)rn rn printf("rxinfo->recvbuf[%d] = 0x%x\n",i,rxinfo->recvbuf[i]);rn rn
结构体指针作为函数参数的问题
我定义了结构体SM_PARAM,实在是搞晕了rn第一次,我声明SM_PARAM* param,然后把param作为参数传入函数rn结果在函数体内,我想要给param->index(index是SM_PARAM的成员)赋值,rn却发现index没有分配空间,无法赋值。rn第二次,我声明SM_PARAM param,然后把&param作为参数传入函数rn结果这次函数体内运行无阻,但出来函数以后,居然把我的一个控件变量的指针给占了~~
用结构体指针作为函数参数
用结构体指针作为函数参数,妥妥的可以修改实参!
结构体指针作为函数参数!!!
需要用到的一个接口函数,第4个参数是结构体,请问怎么传参???rnrnrn下面是接口函数定义:rnrn#define MAX_TIMESEGMENT 4rnrn[code=C/C++]rnint __stdcall SetXXXXX(rn int _iLogonID //登陆的返回值rn int iChannelNum //通道号rn int iWeekday //星期,星期日到星期六为0~6rn PNVS _strScheduleParam[MAX_TIMESEGMENT] //时间模板,支持最大4个时间段rn );rn[/code]rnrn下面是那个结构体的定义:rnrn[code=C/C++]rn typedef structrn unsigned short iStartHour; //开始时0-23rn unsigned short iStartMin; //开始分0-59rn unsigned short iStopHour; //结束时0-23rn unsigned short iStopMin; //结束分0-59rn unsigned short iRecordMode; //使能rn )NVS, *PNVS;rn[/code]rnrn那么我要调用这个函数接口,第四个参数应该怎么传参???rnrnSetXXXXX(1, 5, 1, [color=#FF0000]???[/color]);[color=#008000]//第四个参数怎么传???[/color]rnrnrn下面是我自己写的传法,但每次都调用失败。rn[code=C/C++]rnPNVS ps[4];rnfor (int i = 0; i != 4; ++i)rnrn ps[i] = new NVS;rnrn//假如我初始化ps[1]rnps[1]->iStartHour = 11;rnps[1]->iStartMin = 33;rnps[1]->iStopHour = 18;rnps[1]->iStopMin = 55; rnps[1]->iRecordMode = 1;rnrnSetXXXXX(1, 5, 1, ps); //这样写???rnrnSetXXXXX(1, 5, 1, &ps[1]);//还是这样写???rnrn目前只有这两种写法可以执行正确,但这个接口函数的返回值是错误的,也就是说设置失败了,请问是不是还有别的传参方法。rnrn[/code]rnrnrn
结构体指针作为函数参数的应用
一、结构体的多层封装 在头文件中进行声明: 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
结构体和结构体指针作为函数参数的区别
0·说明 文章里的观点来自网络的总结,程序经过自己的验证,在VC6.0中可正常执行。 1.测试程序 /* ##结构体指针与结构体变量用作函数参数区别:## 结构体指针作为函数参数时,调用时传递的是指向一个结构体变量的指针(即 结构体变量的地址);结构体变量作为函数参数时,调用时传递的结构体变量本身。 即一个结构体A,当它的指针作为参数传入函数func,那么在func中可以通过指针 改...
一个关于赋值表达式作为函数参数的问题
有代码的函数定义是这样写的,rnvoid stringtok(Container &container, std::string const &in,rn [color=#FF0000]const char* const delimiters = " \t\n"[/color])rn我对照着仿了一个函数,Test_para(char* aa, [color=#FF0000]int aaa= 2[/color])rn这样写法表示什么意思?很少看到这样写的rnrn如下是完整代码:template rnvoid stringtok(Container &container, std::string const &in,rn const char* const delimiters = " \t\n")rnrn const std::string::size_type len = in.length();rn std::string::size_type i = 0;rnrn while ( i < len )rn rn // eat leading whitespacern i = in.find_first_not_of(delimiters, i);rn if (i == std::string::npos) return; // nothing left but white spacernrn // find the end of the tokenrn std::string::size_type j = in.find_first_of (delimiters, i);rnrn // push tokenrn container.push_back ((j == std::string::npos) ? in.substr(i)rn : in.substr(i, j-i));rn if (j == std::string::npos) return;rnrn // set up for next looprn i = j + 1;rn rn
结构体指针做函数参数的问题
struct IPMrnrnint i;rnfloat j;rnrn;rnrnint main(int argc, char **argv)rnrnrnstruct IPM a = 2, 3.0;rnstruct IPM *b;rnstruct IPM *c;rnrnb = &a;rnvoid change(struct IPM *t_1, struct IPM *t_2)rnrnrnt_1 = t_2;rnrnrnchange(c,b);rnprintf("%d\n", c->i);rnrn这么写为什么输出不是2呢。
C++中的结构体指针作为函数参数,不会修改实参的值的问题。
最近博主在学c++,琢磨着用c++写个排序二叉树,被c++蹩脚的语法折腾得不要不要的,最要命的地方就是我将main函数里面的结构体传递给函数的时候,在函数里面做的修改不会使得main函数里的实参也变化,见鬼了,讲道理不是指针传递会修改的吗,经过一番折腾之后博主发现,当结构体指针传递给函数时,会拷贝一份指针的值,但是函数内部的指针和函数外部的指针并不是指向同一个引用的,所以才会使得函数里面改变了,但...
利用结构体作为函数参数时结构体指针的定义
在利用结构体作为函数的参数进行传递时,容易犯的一个错误是将一个野指针传给函数导致错误。 #include #include #include #define MAXSIZE 10 typedef struct { int r[MAXSIZE]; //用于存储要排序的数组,r[0]作为哨兵或者临时变量 int length; //用于记录顺序表的长度 }Sq
求教关于结构体指针赋值的问题
struct paimingrnrnchar name[20];rnint b;rnstruct paiming *next;rn;rn程序1:rnpaiming *p=NULL,*q;rnq = p;rnq= (struct paiming*)malloc(sizeof(paiming));rnstrcpy(q->name, "abc");rnq->b = 2;rnq->next = NULL;rnprintf("%s",p->name);rn输出结果为rn程序2:rnpaiming *p , *q;rnp = (struct paiming*)malloc(sizeof(paiming));rnstrcpy(u->name, "ssssssss");rnp->b = 3;rnp->next = NULL;rnq = p;rnstrcpy(p->name, "abc");rnq->b = 2;rnq->next = NULL;rnprintf("%s",p->name);rn输出结果为abcrnrnrn我想问一下程序1为什么输出的不是abcrn他和程序2的区别在哪rnrn谢谢!!!
CArray 作为函数参数与赋值操作
CArray  类派生于CObject类, 而CObject类operator= 操作符为 private (Vs2010中 在文件afx.h line 535 行): void operator=(const CObject& objectSrc); // noimplementation 如果在参数调用中,通过值传递CArray  该类型,会报无法访问private错误
求救(关于结构体指针做函数参数)
typedef struct tagNetworkListrn int iStat;rn char szName[48];rn char szSName[32];rn char szCode[32];rnNETWORKLIST,*LPNETWORKLIST;rnrn//这是函数原型rnbool GetTotalOperator(LPNETWORKLIST *operatorList)rnrn char ans[128], *send = "AT+COPS=?\r\n";rn char *p = NULL;rn CString operatorvalue;rn LPNETWORKLIST tempvalue = new NETWORKLIST;rn ZeroMemory(tempvalue,sizeof(NETWORKLIST));rn WriteComm(send,strlen(send));rn while(1)rn rn if (ReadComm(ans,128))rn rn if ((p = strstr(ans,"+COPS:")) != NULL)rn rn p += 8;rn int state = atoi(&p[0]);rn tempvalue->iStat = state;rn rn p += 3;rn operatorvalue = p;rn int pos = operatorvalue.Find("\"");rn strncpy(tempvalue->szName,p,pos);rn AfxMessageBox(tempvalue->szName);rn p += (pos+3);rn operatorvalue = p;rn pos = operatorvalue.Find("\"");rn strncpy(tempvalue->szSName,p,pos);rn rn p += (pos+3);rn operatorvalue = p;rn pos = operatorvalue.Find("\"");rn strncpy(tempvalue->szCode,p,pos);rn operatorList = &tempvalue;//在这里operatorList已经得到了需要传回的值,我调试了,值都正确rn return true;rn rn else if (strstr(ans,"ERROR") != NULL)rn break;rn rn rn return false;rnrnrn//在这里调用rnvoid CTestWirelessDlg::OnButton4() rnrn // TODO: Add your control notification handler code herern LPNETWORKLIST operatorList = new NETWORKLIST;rn ZeroMemory(operatorList,sizeof(NETWORKLIST));rn OpenComm("Com3",460800);rn CString abc;rn GetTotalOperator(&operatorList);rn abc.Format("当前可用网络: [%d] " ,operatorList[0].iStat);rn AfxMessageBox(abc);rnrn//很郁闷,为什么我在Onbutton4中的operatorList接收的值全是'0'值,请各位帮帮忙rn这个函数的功能 是将所有可用的网络运营商输出来,在函数里,我只将第一个输出来(只是先测试一下)
关于结构体指针的赋值
struct skrnin a;rnint age;rndata,*p;rn如果要使指针p指向data中的成员a,正确的赋值语句是p=(struct sk*)&data.a rn为什么不是p=&data.arn谢谢~
关于指针作为函数参数的问题
include rnusing namespace std;rnrnstruct Studentrnrn long number;rn float score;rn Student *next;rn;rnrnStudent* head;rnrnStudent* Create(void)rnrn Student* PS;rn Student* PEnd;rnrn head = NULL;rnrn while (1)rn rn PS = new Student;rn cin >> PS->number >> PS->score;rn if (0 == PS->number)rn break;rnrn if (NULL == head)rn head = PS;rn elsern PEnd->next = PS;rnrn PEnd = PS;rn rn PEnd->next = NULL;rn delete PS;rn rn return head;rnrnrnvoid Delete(Student* head, int number)rnrn Student* p;rnrn if (NULL == head)rn rn cout << "The list is empty!" << endl;rn return;rn rnrn if (head->number == number)rn rn p = head;rn head = head->next;rn delete p;rn p = NULL;rnrn cout << "The head is deleted" << endl;rn return;rn rnrn for (Student* pGuard=head; pGuard->next; pGuard=pGuard->next)rn rn if (pGuard->next->number == number)rn rn p = pGuard->next;rn pGuard->next = p->next;rn rn delete p;rn p = NULL;rnrn cout << "The number " << number << " is deleted!" << endl;rnrn return;rn rn rnrn cout << "Can not find " << number << "from list" << endl;rn return;rnrnrnvoid ShowList(Student* head)rnrn cout << "The list is: " << endl;rnrn while (head)rn rn cout << head->number << " " << head->score << endl;rn head = head->next;rn rnrnrnvoid main(void)rnrn Create();rnrn ShowList(head);rn rn Delete(head,3); rn ShowList(head);rnrnrn问题:rn1.为什么void ShowList(Student* head)不会修改实参head而只修改形参head的地址?也就是说形参只是实参的一个拷贝?rn2.为什么void Delete(Student* head, int number)里面修改了形参head所指向的地址实参head也跟着变化呢?rn3.也就是说当指针做为函数的形参时,在什么情况下修改形参的地址或者所指向的地址实参也会变化?是不是修改*head的值,实参也会同步修改,但修改head的值,实参就不会同步变化?rn谢谢!rn
关于 string & 作为函数参数的问题
有个函数rnfoo(string & str)rnrn调用:rnfoo(string("hi"));//正确rnfoo("hi");//错误rnrn第一正确,我理解为临时对象在构造自己的语句结束后才析构,rn第二个不知道怎么解释。
关于数组名作为函数参数问题?
[code=c]//rn// main.cpprn// Filern//rn// Created by apple on 15/4/15.rn// Copyright (c) 2015年 BraveTang. All rights reserved.rn//rnrn#include rn#include rn#include rnrnusing namespace std;rnrnclass Filern string name;rn ifstream fin;rnpublic:rn File(const string name)rn //fstream fin;rn fin.open(name);rn if(!fin.is_open())rn rn fin.clear();rn fin.open(name,ios::out);rn fin.close();rn fin.open(name);rn rn cout << "文件已打开" << endl;rn rn ~File()rn fin.close();rn cout << "文件已关闭" << endl;rn rn void displayFile()rn rn// fin.seekg(0,fin.end); //设置当前文件位置指针相对于文件末尾的位置。rn// long length = fin.tellg(); //获得当前文件位置指针的位置,即文件长度。rn// fin.seekg(0,fin.beg); //设置当前文件位置指针到文件首部rn// string str;rn// str.resize(length, ' '); //初始化字符串rn// char* begin = &*str.begin();//rn// fin.read(begin, length);rn// //cout << str ;rn// fin.seekg(0, fin.beg); //整个文件一起读rn rn long pos1= 0,pos2; //分块读rn char buf[100];rn bool ok = true;rn while (ok) rn fin.seekg(pos1);rn fin.read(buf, sizeof(buf));rn if (!fin) rn fin.clear();rn ok = false;rn rn cout.write((char*)buf, fin.gcount());rn pos2= fin.tellg();rn pos1 =pos2;rn rn fin.seekg(0);rn rn void getLine(char* buf)rn rn printf("buf = %p\n",buf);rn //char buff[100];rn // cout << "buff= " << &buff << endl;rn cout << "***buf size:" << sizeof(buf) << endl; //sizeof[buf] ==8;rnrn fin.getline(buf,sizeof(buf),'\n');rn cout << "****buf= " << &buf << endl;rn fin.clear();rn rn //cout << "gcout = " << fin.gcount() << endl;rn rn rn rn;rnint main(int argc, const char * argv[]) rn // insert code here...rn File f("jun.txt");rn char buf1[100];rn cout << "buf1= " << &buf1 << endl;rn cout << "buf1 size:" << sizeof(buf1) << endl;//sizeof(buf1)== 100rn f.getLine(buf1);rn f.getLine(buf1);rn return 0;rnrn[/code]rn明明我是将buf1作为实参传给getLine()函数的char* buf形参的,那么是不是以为着,在getLine()中,buf指针所指向的数组即buf1[]数组呢?为何在main函数中sizeof(buf1)==100而 getLine()中sizeof(buf) == 8呢? 刚学C++,大神指教一下。谢谢!
关于构造函数作为函数参数的问题
QTransform 这个了类有构造函数: QTransform ()rnrnsetTransform ( const QTransform & matrix) 有QTransform 类作参数;rnrn为什么可以直接把构造函数QTransform () 作为 setTransform 的参数?rnrn这样:[code=C/C++]setTransform(QTransform());[/code]rnrn谢谢
关于作为函数参数的类模板问题。。。。。
对于一个类模板rntemplaternclass CMatrix rn CMatrix& xchgrow(int irow, CMatrix& xrow);rn ...rn;rnrntemplaternCMatrix& CMatrix::xchgrow(int irow, CMatrix& xrow)rnrn return *this;rnrnrn为什么在函数实现时,函数的参数CMatrix& xrow不用写成CMatrix& xrow,我试了一下,这两种写法均可以,但不知道他们的区别是什么?rnrn但是函数的返回值就必须写成CMatrix ... 这又是为什么啊?
关于session作为函数参数的问题
当一个session作为一个函数的参数时,是不是之前不用声明或者定义了?rn比如下面的调用:rnhello = fun(session);rnrn////////fun函数如下:rnfun(HttpSession session)rnrnreturn session.getAttribute("xxx");rn
【关于二维数组作为函数参数的问题】
[code=C/C++]void CwmdgDlg::OnBnClickedOk()rnrn WritePacketData((char*)NameAndId,"123");rnrn[/code]rnrn至少编译能过rnrn现在是m_temp 打印出来是 问号 而 NameAndId[i]是一大堆烫烫烫烫烫烫烫烫烫rnrnrnrn[code=C/C++]void CwmdgDlg::WritePacketData( CHAR *NameAndId, CString KeyWord )rnrn CString m_temp;rn for (int i = 0;i<=4;i++)rn rn m_temp = NameAndId[i];rn MessageBox( m_temp,_T("查到的行"),MB_OK);rn rn //int Replace( KeyWord, LPCTSTR lpszNew ); rn //act=claimmoney&cityid=JITaKS4dCa4_d6rn[/code]rnrn我的NameAndId[50][14] 是个二位数组 rnrn里面全是14位的字符串rnrn现在要替换KeyWord rnrn大家帮忙给看看
关于字符数组作为函数参数的问题
void copy string(from,to)rnchar from[],to[];rnrnint i=0;rnwhile(from[i]!='\0')rnrn to[i]=from[i];rn to++;rn rn to='\0';rn rnmain()rnrnchar *a="i am a teacher.";rnchar *b="you are a student.";rnprintf("string a=%s\nstring b=%s\n",a,b);rncopy string(a,b);rnprintf("\n string a=%s\n string b=%s\n",a,b);rnrnrn这是书上的例题,作用是字符串复制。在TC2中编译时显示第1、2行出错(数组大小不可知)不知是何原因,语法有问题吗?rn虚心求教,望各位指点
结构体指针赋值的问题
struct Samplernrn int *m_time;rn int m_nAge;rn;rnrnstruct Sample *pSample = (Sample *)1; // 赋初值.???????rnrn这个初值到底赋到了哪里,赋给了谁。
结构体指针整体赋值的问题?!
[code=c]rnstruct DATArnint x;rnint y;rnrnDATA * a = new Data;rnDATA * b= new Data;rna.x =1;rna.y =1;rnrn*b =*a;rnrn[/code]rnrn这样并不对吧?反正运行是有错误 的和 其他基本类型、类的整体赋值就不一样 之前看书记得看过 现在忘记原因了 求指教
结构体指针赋值
#include rn#include rnstruct regDevice rn int protocolId; rn struct regDevice* next; rn; rnrnregDevice* firstMrfDataBufferDriver = NULL;rnrnint main(int argc, char* argv[])rnrnregDevice* mrfDataBufferDriver=NULL;rn regDevice** prev;rnmrfDataBufferDriver=(regDevice*)malloc(sizeof(regDevice));rnmrfDataBufferDriver->next=NULL;rnfor (int i=0;i<10;i++) rnrnmrfDataBufferDriver->protocolId=i;rnprev = &firstMrfDataBufferDriver;rnif (*prev != NULL) rnprev = &(*prev)->next;rnrn*prev = mrfDataBufferDriver;rnprintf("%d\n",(*prev)->protocolId);rnrn return 0;rnrnrnrn为什么循环中,只有第一次i=0时,*prev才为NULL rn其它次循环*prev就不等于NULL了呢rnrn非常感谢
关于构造函数参数的赋值问题
请各位给看一下下面这个构造函数是什么意思[code=c]rnclass SarImagernrnpublic:rn SarImage(double fc, double tc, double bw, double dt):m_fc(fc),m_tc(tc),m_bw(bw),m_dt(dt)rn SarImage()m_Img.m_Matrix=NULL;rn ~SarImage()rnrn[/code]rn第一个含参构造函数,冒号后面的部分我只在用派生类时见过,可现在此处并不是派生类啊,请问这是什么意思?
关于多维数组作为函数参数。。。。。
现有函数void func(char**),对一二维数组char szBuf[2][3]如果作为参数,函数该如何表示?试了很久都有问题,请大家帮帮忙,谢谢
求大神帮忙 有关结构体指针作为函数参数的问题
#include rnrn#define N 4rnrnstruct studentrnrn unsigned int no;rn char name[16];rn float score;rnrnrnvoid input(struct student *p)rnrnint main(int argc,char *argv[])rnrn struct student stu[N];rn rn input(stu);rn rn system("pause");rnrn return 0;rnrnrnrnrnvoid input(struct student *p)//编绎过程式中第一个提示错误的行。rnrn int i;rn printf("输入%d个学生的信息:学号,姓名,成绩。\n",N);rn for(i=0;i
结构体指针做函数参数
问题:在程序中我把结构体指针作为实参传递给函数,在函数里面对结构体成员进行赋值,退出函数之前可以打印结构体成员的值,退出函数后打印出结构体成员的值,发现结构体成员为空。rn部分代码如下:rn结构体的定义:rnstruct _pos_patrn rn char file[100]; rn char patrn[100]; rn int pos;rn struct pos_patrn *next;rnrn;rntypedef struct _pos_patrn * POS_PATRN;rn操作结构体的函数如下:rnvoid addPos(char *ftype,char *patrn,int pos,POS_PATRN pospatrn)rn rn POS_PATRN ppos=(POS_PATRN)malloc(sizeof(struct _pos_patrn));rn assert(ppos);rn memcpy(ppos->file,ftype,strlen(ftype));rn memcpy(ppos->patrn,patrn,strlen(patrn));rn ppos->pos=pos;rn ppos->next=pospatrn;rn pospatrn=ppos;rn printf("the patrn is:%s,the file is:%d\n",pospatrn->patrn,pospatrn->pos);rnrn主函数中对pospatrn分配了内存:rnPOS_PATRN pospatrn=(POS_PATRN) malloc(sizeof(struct _pos_patrn));rn主函数中有两行代码如下rnaddPos(ftype,patrn,pos,pospatrn);rnprintf("pattern:%s is in the position:%d\n",pospatrn->patrn,pospatrn->pos);rn但输出的结果却不同(一个在addpos中输出)rnthe patrn is:504B0304,the pos is:0rnpattern: is in the position:0rnrn
关于传递结构体指针作为参数
请问:向函数中传递结构体指针,然后在这个函数中设置此结构体成员的值rn再在主函数中打印出此结构体成员的值,应该如何做,给个简单的例子就行,我写的一直都出错rn谢谢!!!
关于typedef 定义结构体指针赋值的问题
#includern #includern #includern typedef struct perrn rn char name[20];rn char add[20];rn int age;rn Person; 如果将下面给的 Person *s 合并到这里: Person,*s; 当执行到s=a的时候 编译就出错 为什么呢?rnrn int main(void)rn rn Person *s;rn int i;rn char *p;rn Person a[3]=rn "강민","서울",10,rn "김강","울산",12,rn "박수","대구",9rn ;rn s=a;rn printf("plesae input a string.\n");rn scanf("%s",p);rn for(i=0;i<3;i++,s++)rn if(strcmp(s->name,p)==0)rn rn printf("find the people\nthis people's informatation as fallow\n");rn printf("%s\t%s\t%d",s->name,s->add,s->age);rn rn elsern rn printf("NO this people.\n");rn exit(0);rn rn 用 vs 2010 编译可以通过 但是如果按照上面修改了以后就不行rn 程序可能不完善 还有错的地方 请大家帮忙改改rn
vetcor 作为函数参数的问题
准备在一个类里面操作一个全局的数据结构 rnclass nodernrnpublic:rn node(vector & _a) a = _a rn work()rn //这里直接操作 a ,对a 的改变,会最终反映到 _a 这个全局变量中么rn rnprivate :rn vector a;rn
函数指针作为函数参数问题
在网上找了一个统计执行某段代码所需时间的方法,想写成函数,设计后的代码如下:rn[code=C/C++]rndouble get_time() //参数表要为一个函数指针rnrn LARGE_INTEGER litmp; rn LONGLONG QPart1,QPart2;rn double dfMinus, dfFreq, dfTim;rn QueryPerformanceFrequency(&litmp);rn dfFreq = (double)litmp.QuadPart;// 获得计数器的时钟频率rn QueryPerformanceCounter(&litmp);rn QPart1 = litmp.QuadPart;// 获得初始值rnrn /*******rn 统计部分代码(这里运行函数指针指向的函数)rn *******/rnrn dorn rn QueryPerformanceCounter(&litmp);rn QPart2 = litmp.QuadPart;//获得中止值rn dfMinus = (double)(QPart2-QPart1);rn dfTim = dfMinus / dfFreq;// 获得对应的时间值,单位为秒rn while(dfTim<0.000001); rn return dfTim;rnrn[/code]rnrn函数要加一个函数指针参数,把指向的函数在中间标注处运行rn为了通用,要求该指针指的函数的返回值为所有类型,参数也是可变的,rn求教要怎么写
字符指针作为函数参数问题
[code=C/C++]rn#includern#includernchar* InputString() //字符串输入函数rnrn char tem[100];rn char* p;rn p=tem;rn scanf("%s",tem);rn return p;rnrnvoid OutputString(char* p) //字符串输出函数rn //乱码 rnrn printf("%s",p);rnrnint main()rnrn char* Str1;rn char* Str2;rn Str1=InputString();rn Str2=InputString();rn OutputString(Str1);rn OutputString(Str2); rn printf("%s",Str1); //这样输出最后还是有乱码rn return 0;rnrn[/code]
接口作为函数参数的问题
请问:当接口作为函数参数的时候,代表什么意思?rn
引用作为函数参数问题
[color=#0000FF]照着书上写了一个单链表的实现函数,结果发现所有函数参数用引用的都出错,不知道为什么,大家帮忙看下,谢谢了(下面是一个例子)。[/color]rn[code=C/C++]#define LIST_INIT_SIZE 100 /*线性表存储空间的初始分配量*/rntypedef int ElemType;rntypedef struct rn ElemType *elem; /*存储空间基址 */rn int length; /*当前长度 */rn int listsize; /*当前分配的存储容量 */rnSqlist;rnrnint InitList( Sqlist &L) /*构造一个空的线性表*/[color=#FF0000] 此处有错误提示[/color]rnrn L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));rn if(!L.elem) exit(1); //存储分配失败 rn L.length=0; // 空表长度为0 rn L.listsize=LIST_INIT_SIZE; //初始存储容量 rn return 1; rn[/code]rn[color=#FF0000]错误提示如下:syntax error before '&' token ; `L' undeclared (first use in this function) rn[/color]rn
指针变量作为函数参数问题
今天建哈夫曼树的时候发现指针变量作函数参数的问题,花了两个多小时,深刻反思! 插入元素到从小到大排序的单链表中,并保持链表的有序性,有两种做法: 一种是带头节点的单链表(很简单,不讨论) 另一种是不带头节点的单链表插入: 标准的不带头节点插入方法(用返回值返回第一个节点地址): Link *insert(LNode *node,Link *head){ LNode *p
临时对象作为函数参数的问题
记得C++标准中临时对象作为右值,与其匹配的copy构造函数的参数应该为const&,因此如果copy构造函数声明中的参数为non const的应用类型,那么就无法实现对临时对象的copy。rn然而下面这段代码在编译时却遇到没有问题,顺利通过了。。想请教一下各位前辈这是什么原因呢?rn另外,如果采用重载“=”的方式,编译就会出错,提示没有匹配的函数。rn[code=c]rnrn#include rnusing std::cout;rnusing std::cin;rnusing std::endl;rntemplate rnstruct auto_ptr_refrnrn public:rn Y*yp;rn auto_ptr_ref(Y*ptr)throw():yp(ptr)rn rnrn rn;rnrntemplate rnclass auto_ptrrnrnprivate:rn T*ap;rnpublic:rn typedef T element_type;rnrn explicit auto_ptr(T*ptr=0) throw():ap(ptr)rn rnrn rn auto_ptr(auto_ptr& rhs)throw():ap(rhs.release())rn rnrn rnrn templatern auto_ptr(auto_ptr&rhs)throw():ap(rhs.release())rn rnrn rnrn auto_ptr& operator=(auto_ptr&rhs) throw()rn rn reset(rhs.release());rn return *this;rn rn templatern auto_ptr& operator=(auto_ptr&rhs)throw()rn rn reset(rhs.release());rn return *this;rn rnrn ~auto_ptr() throw()rn rn delete ap;rn rnrn T* get()const throw()rn rn return ap;rn rn T& operator* ()const throw()rn rn return *ap;rn rn T* operator->() const throw()rn rn return ap;rn rnrn T* release() throw()rn rn T* tmp(ap);rn ap=0;rn return tmp;rn rn void reset(T*ptr=0)throw()rn rn if(ptr!=ap)rn rn delete ap;rn ap=ptr;rn rn rnrn;rnrnint main()rnrn auto_ptrp=auto_ptr();//编译错误rn auto_ptrq(auto_ptr());//编译通过rn return 0;rnrnrnrn[/code]
字符串指针作为函数参数的问题
int point_test(char *buff)rnrn buff = "hello word!";rn rn return 0;rnrnrnint main()rnrn char *str_name = Null;rn point_test(str_name);rn printf("point_test-str_name:%s\n", str_name);rnrn return 0;rnrnrnrn为何str_name打印出来啥都没有?望大家指点。
数组作为函数参数的问题
现在一BYTE数组A(25) ,要求写一函数SUM(), 通过此函数 将A数组中连续的某几个元素传入函数,而后将这几个元素的部分连续单元求和 并将结果通过参数F返回rnrnSUMA的实现方式分两种,调用形式分别如下rnrn1、call SUMA(A(),D,E,F) D为求和元素中的第一个元素的索引号,E为求和元素的个数 ,F存放求和结果 rnrn1、call SUMA(A(3),8,F) 从A(3)开始的8个单元求和,F存放求和结果 这是调用形式,当然第一个参数也可能是A(5) A(6)等,第二个参数不一定是8,当然也可以是9,10等其他值 。rn
相关热词 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法 c# gmail 发邮件 c# 多层文件