c的新手问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 15:45:23
指针问题,,麻烦帮我改下
typedef struct kkk{
int x;
struct kkk *next;
}kkk;

int kkk1(kkk *node,int *x)
{
if((node=(kkk*)malloc(sizeof(kkk)))==NULL)return 1;
node->x=*x;
return 0;
}

int main()
{
struct kkk *node=NULL;
int x=9;
kkk1(node,&x);
printf("%d",node->x);
return 0;
}
如果要进行动态分配

int kkk1(kkk *node,int *x)
{
if((node=(kkk*)malloc(sizeof(kkk)))==NULL)return 1;
node->x=*x;
return 0;
}
要怎么改????

注意:你的程序中的头文件的引用没有了吧!以下是我对你的程序所做的正确修改,且实现了在函数中进行动态分配内在空间。

#include <stdlib.h>
#include <stdio.h>
typedef struct kkk{
int x;
struct kkk *next;
}kkk;

/*虽然你原来使用是指针型的形式参数node,但因为你想要使得对指针型形参node的
修改反映到主函数中,即在函数中的修改是全局的,这就决定了你需要使用二级指针
因为你更改的是指针型变量的值。其原理与在函数中更改普通形参变量的值并使其更
改的结果反映到调用函数中时需要使用指针型形参的原型是一样的。
*/
int kkk1(kkk **node,int *x)/*将node更改为二级指针,就可以实现在函数中动态分配空间*/
{
if((*node=(kkk*)malloc(sizeof(kkk)))==NULL)
return 1;
(*node)->x=*x;
return 0;
}

int main()
{
struct kkk *node=NULL;
int x=9;
if(kkk1(&node,&x) ==1)/*注意调用时的参数传递方法*/
exit(0);
else
printf("%d\n",node->x);

free(node);/*记得要在程序结束前释放动态分配出来的内存!!!*/
return 0;
}

typedef struct kkk{
int x;
struct kkk *next;
}kkk;
void kkk1(k