typedef 定义结构体 多级指针问题
定义结构体指针:
typedef struct language
{
int id;
char name[66];
char ISOCode[34];
} *languagePtr;
以下定义是什么意思:
languagePtr pLanguage; //定义结构体指针
languagePtr *ppLanguage; //这是定义二级指针么
languagePtr **ppppLanguage; //这是定义三级指针么
还有个问题是如果我在子函数中使用calloc或者malloc 但是不用free函数释放的话,子函数执行完之后,calloc或者malloc 开辟的空间应该不会自动被释放的吧?
例如:
void main()
{
int iError;
int *temp
languagePtr **ppppLanguage;
ppppLanguage=(languagePtr **)malloc(sizeof(languagePtr *));
iError=getLanguage(ppppLanguage);
*temp=*ppppLanguage;
free(ppppLanguage);
}
getLanguage(languagePtr **ppppLanguage)
{
int i=10;
languagePtr *ppLanguage=NULL;
*ppppLanguage=ppLanguage=(languagePtr *)calloc(i+ 1, sizeof(languagePtr ));
for(j=0;j<i;j++)
{
languagePtr pLanguage= (languagePtr )calloc(1, sizeof(language));
*ppLanguage++ = pLanguage;
}
};
这个程序会有什么问题???
[解决办法]
不建议用两级以上的指针,最后总要确保malloc/free是配对的。
[解决办法]
什么的需要导致你想到用多级指针啊!
这样你会坑了你自己的!换个别的思路吧!
[解决办法]
languagePtr pLanguage; //定义结构体指针
languagePtr *ppLanguage; //这是定义二级指针么
languagePtr **ppppLanguage; //这是定义三级指针么
回答:是的
[解决办法]
不要做A语言代码修改为B语言代码的无用功。
也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。
只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。
即可很方便地让A、B两种语言之间协调工作。
[解决办法]
还有个问题是如果我在子函数中使用calloc或者malloc 但是不用free函数释放的话,子函数执行完之后,calloc或者malloc 开辟的空间应该不会自动被释放的吧?
是的,结果会造成内存泄漏。
指针可以用,不能乱用,否则到最后会把自己搞晕的