当前位置:   article > 正文

使用结构体指针作为参数赋值传递时的注意点_结构体指针作为函数参数传递

结构体指针作为函数参数传递

函数传参过程中,可能会遇到传递的参数为结构体的指针的情况。这个时候再给结构体赋值时,需要注意几点。
结构体赋值的情况如下:

typedef struct
{
	int key;
	int num;
}test;
void fun(test * m_test)
{
	test stest;
	stest.key=1;
	stest.num=1;
	//需要将这个test结构体的值通过参数传递出去,即将stest的值赋给m_test
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

一、错误做法

  1. 不能使用m_test= &stest;,因为这样会改变m_test的指针的位置,就起不到传递参数改变指定位置数据内容的目的了。
  2. 不能使用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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/730769
推荐阅读
相关标签
  

闽ICP备14008679号