- 论坛徽章:
- 0
|
FUNCTION_STRUCT ReturnStruct(void)
{
FUNCTION_STRUCT internalData;
internalData.m_Member1 = 1;
internalData.m_Member2 = 2;
strcpy(&(internalData.m_String[0]), "Hello World!\n");
return internalData;
}
|
难道有人认为 internalData 就是拷贝之源 ?
那么按照一般的理解internalData可是在堆栈中生成的 , 如果是这样的话 ,函数一返回 , internalData岂不是没了.
"松饼熊"是正确的,他在2楼的程序实际上是这样的:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
int m_Member1;
int m_Member2;
char m_String[20];
}FUNCTION_STRUCT;
void ReturnStruct(FUNCTION_STRUCT *internalData)
{
internalData->m_Member1 = 1;
internalData->m_Member2 = 2;
strcpy(internalData->m_String, "Hello World!\n");
}
int main(int argc, char *argv[])
{
FUNCTION_STRUCT externalData;
ReturnStruct(&externalData);
printf("%d, %d, %s",
externalData.m_Member1,
externalData.m_Member2,
&externalData.m_String[0]);
system("AUSE");
return 0;
} |
这跟 "OneWaterloo" 说的结构体大小没有关系 , 都是这样的.
[ 本帖最后由 老手 于 2010-1-26 18:14 编辑 ] |
|