首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言中函数参数传递有关问题解答

2012-06-13 
c语言中函数参数传递问题解答#includestdio.h#includestdlib.htypedef struct{int *elemint length}

c语言中函数参数传递问题解答
#include<stdio.h>
#include<stdlib.h>
typedef struct{
  int *elem;
  int length;
}Lnode,*LinkList;
void Init(Lnode *L)
{
L->elem=(int*)malloc(10*sizeof(int));
L->length=0;
}
void main()
{
Lnode *A;
Init(A);
}
这个编译没错,运行的时候会终止
介绍一些关于函数传递的





[解决办法]
实参和形参问题,Init(LinkList L)函数要求地址传递
[解决办法]

探讨

A不是一个指针吗,传递过去的不是地址,应该会分配地址。

[解决办法]

看看你的代码:
void main()
{
Lnode *A;
Init(A);
}


你A都没有分配空间!!不出错才怪。。。

Lnode A;//这样才叫做分配空间
Init(&A);//传递A的地址
[解决办法]
探讨

上面的我已经看懂了,结构体指针变量不分配地址,但是下面的都可以,
#include<stdio.h>
#include<stdlib.h>
typedef struct{
int *elem;
int length;
}Lnode,*LinkList;
void Init(LinkList L)
{
L=(LinkList)malloc(10*sizeof(Lnod……

[解决办法]
补充:
C/C++ code
void main(){LinkList A; // 补充: 这里实际上就是 Lnode * , 同样是没有具体分配空间,纯粹是一个无效指针.Init(A);//改: 这种调用在你的代码里面是没有问题的(编译可通过),但,思路很怪.总之一句话,不要在 Init()中malloc ....}
[解决办法]
C/C++ code
#include<stdio.h>#include<stdlib.h>typedef struct{  int *elem;  int length;}Lnode,*LinkList;void Init(Lnode *&L){L->elem=(int*)malloc(10*sizeof(int));L->length=0;}void main(){Lnode *A;Init(A);} 

热点排行
Bad Request.