#include "stdafx.h"
#include "malloc.h"
typedef struct data{
int a;
int b;
}data,*pdata;
pdata test;
void Creat(pdata para,int a, int b)
{
para=(pdata)malloc(sizeof(data));
para->a=a;
para->b=b;
}
int _tmain(int argc, _TCHAR* argv[])
{
Creat(test,3,4);
return 0;
}
这段传的是指针test,为什么不能对test进行初始化?
但是
#include "stdafx.h"
#include "malloc.h"
typedef struct data{
int a;
int b;
}data,*pdata;
pdata test;
pdata *ptest=&test;
void Creat(pdata *para,int a, int b)
{
*para=(pdata)malloc(sizeof(data));
(*para)->a=a;
(*para)->b=b;
}
int _tmain(int argc, _TCHAR* argv[])
{
Creat(ptest,3,4);
return 0;
}
这段代码就可以完成初始化
我的疑问是第一段也是指针传递啊,操作的是地址,为什么不能初始化呢?请大神指教。
para=(pdata)malloc(sizeof(data));
这里改变地址,不会作用到实参上。
void Creat(pdata& para,int a, int b)
#include
struct S
{
int i;
int *p;
};
int main()
{
S s;
int *p = &s.i; //p指向s的首地址
p[0]=4; //处理s.i......
答案就在这里:有关结构体中的指针问题
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。
应该传递指针的指针,第一段代码传递的是test,它虽然是指针类型 但是要在函数中修改它 所以应当传递它的地址&test
对一般变量的修改,需要取此变量的指针;
对指针的修改也是一样,需要再取指针;如果只是对指针指向的内容的修改,就不用再取指针了。