赞
踩
在函数传参过程中,可能会遇到传递的参数为结构体的指针的情况。这个时候再给结构体赋值时,需要注意几点。
给结构体赋值的情况如下:
typedef struct
{
int key;
int num;
}test;
void fun(test * m_test)
{
test stest;
stest.key=1;
stest.num=1;
//需要将这个test结构体的值通过参数传递出去,即将stest的值赋给m_test
}
一、错误做法
m_test= &stest;
,因为这样会改变m_test的指针的位置,就起不到传递参数改变指定位置数据内容的目的了。memcpy(m_test,&stest,sizeof(test));
,因为这样会将stest的内容,都赋值给m_test的key值,即key的指针位置上,因为结构体的每一个键,都会对应一个指针位置。这个从对结构体的使用可以看出,比如key值,指针写成m_test->key,而num值,指针写成m_test->num,这个->代表着不同指针。二、正确做法
将结构体指针的每一个键所对应的指针分别赋值。才能正常传递。
void fun(test * m_test)
{
test stest;
stest.key=1;
stest.num=1;
m_test->key=stest.key;
m_test->num=stest.num;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。