当前位置: 代码迷 >> C语言 >> 【已解决】这个程序过为什么编译可以通过,运行就出错?
  详细解决方案

【已解决】这个程序过为什么编译可以通过,运行就出错?

热度:333   发布时间:2007-11-18 11:10:12.0

我给你几个版本:
1.

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100

typedef struct
{
int elem[MAXSIZE] ;
int len ;
} SQLIST;

void creatsqlist ( SQLIST &L );

int main( void )
{
SQLIST L ;
creatsqlist (L);

printf ( " %d", L.elem[1] );

system ( "pause" );

return 0;
}//函数main结束

void creatsqlist ( SQLIST &L ) //创建线性表
{
int i;

scanf( "%d", &L.len );

for ( i = 0; i < L.len; i++ )
scanf ( "%d", &L.elem[i] );
}


----------------解决方案--------------------------------------------------------
不是应该输出3吗?为什么是随机值?
----------------解决方案--------------------------------------------------------
楼主把改过的代码再贴出来看看
----------------解决方案--------------------------------------------------------

2.
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100

typedef struct
{
int elem[MAXSIZE] ;
int len ;
} SQLIST;

void creatsqlist (SQLIST *L) ;

int main( void )
{
SQLIST L ;
creatsqlist (&L);

printf ( " %d", L.elem[1] );

system ( "pause" );

return 0;
}//函数main结束

void creatsqlist (SQLIST *L) //创建线性表
{
int i;

scanf( "%d", &L->len );

for ( i = 0; i < L->len; i++ )
scanf ( "%d", &L->elem[i] );
}


----------------解决方案--------------------------------------------------------
回复:(succubus)楼主把改过的代码再贴出来看看

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100

typedef struct
{
int elem[MAXSIZE] ;
int len ;
} SQLIST;

void creatsqlist ( SQLIST L );

int main( void )
{
SQLIST L ;
creatsqlist ( L );

printf ( " %d ", L.elem[2] );

system ( "pause" );

return 0;
}//函数main结束

void creatsqlist ( SQLIST L ) //创建线性表
{
int i;

scanf( "%d", &L.len );

for ( i = 0; i < L.len; i++ )
scanf ( "%d", &L.elem[i] );
}


----------------解决方案--------------------------------------------------------
主函数里这两个L不一样
SQLIST L ;
creatsqlist ( L );

creatsqlist的实参LL的一个副本
----------------解决方案--------------------------------------------------------
以下是引用懒龟在2007-11-18 11:11:32的发言:
不是应该输出3吗?为什么是随机值?

因为行参不能改变实参.
你这里用指针做参数,但是函数里用的也是地址.


----------------解决方案--------------------------------------------------------
你最后改过来的程序就是个值传递了.
----------------解决方案--------------------------------------------------------
哦 谢谢LS两位了 特别是nuciewth(这名字是什么意思啊)
好饿啊 去吃早(午)饭了
----------------解决方案--------------------------------------------------------
nu(学校后几个字母) cie(学院部分字母)wth名字首字母

还有我觉得你签名里应该是雏凤.

最后还没有到吃饭的时间,因为要看完这场比赛,火箭太烂
----------------解决方案--------------------------------------------------------
  相关解决方案