镕羽 发表于 2012-8-14 18:48:26

大神帮忙看看这个 模拟 push的 代码哪里错了~~编译通过,运行却不行

#include <stdio.h>
void push(int *p,int a)
{
   int k;
   p=a;
   }
   
extern int k;
int main()
{
    int k=0;int a=10;
    int D={0};
    push(D,a);
    printf("hello");
    }


镕羽 发表于 2012-8-14 18:51:16

请问 为什么运行结果会如图所示啊?
谢谢大家~~

callmesb 发表于 2012-8-14 19:17:56

extern int k;
这个是什么

callmesb 发表于 2012-8-14 19:19:39

void push(int *p,int a)
{
   int k;
   p=a;
   }
这里面的k还没有初始化

镕羽 发表于 2012-8-14 19:34:13

callmesb 发表于 2012-8-14 19:19 static/image/common/back.gif
void push(int *p,int a)
{
   int k;


extern 加了后 貌似代表这个变量可以一、通用

我在main函数里初始化了

那运行结果貌似是写入内存错误,不过不晓得为什么

reborn_cyl 发表于 2012-8-14 19:38:56

帮顶~~~同求答案~@~

紫凝雪儿 发表于 2012-8-14 19:48:23

{:5_134:}同求答案。。

callmesb 发表于 2012-8-14 19:48:37

镕羽 发表于 2012-8-14 19:34 static/image/common/back.gif
extern 加了后 貌似代表这个变量可以一、通用

我在main函数里初始化了


主函数里的K和push里的K是分别定义的变量啊。你这K又不是全局变量,所有地方都能用,刚试了一下,在push给k初始化能成功运行

callmesb 发表于 2012-8-14 19:53:58

#include <stdio.h>
int k;
void push(int *p,int a)
{
   p=a;
}
int main()
{
    k=0;
int a=10;
    int D={0};
    push(D,a);
    printf("hello");
return 0;
}
你看看这样改符合你要求么

镕羽 发表于 2012-8-14 20:04:03

callmesb 发表于 2012-8-14 19:53 static/image/common/back.gif
#include
int k;
void push(int *p,int a)


为什么 加extern 不行?表明 k 这个 参数 什么文件都可以用啊

肿么一运行就出现那图了呢

callmesb 发表于 2012-8-14 20:19:53

镕羽 发表于 2012-8-14 20:04 static/image/common/back.gif
为什么 加extern 不行?表明 k 这个 参数 什么文件都可以用啊

肿么一运行就出现那图了呢

extern貌似是调用别的文件里的参数哦。。。

maxOrder石 发表于 2012-8-14 21:02:28

本帖最后由 maxOrder石 于 2012-8-14 21:10 编辑

松子说的是对的,extern只是引用的,据我所知,静态变量和全局变量在c中系统是自动初始化为0的,还有push函数里的k是局部变量,函数调用结束会消亡,作为push,肯定要将k定为全局变量。

晨钟暮鼓 发表于 2012-8-14 21:20:59

牛 !!!!!!!!!!!!!!!!!!

晨钟暮鼓 发表于 2012-8-14 21:40:25

擦   什么东西啊!!!!

jose 发表于 2012-8-14 23:24:58

extern 告诉编译器这个变量在别的文件里,如果你要使用extern变量,不需要在自己的文件里再声明int,当然就这个程序来说编译器会告诉你链接错误,因为“别的文件”不存在。
static 告诉编译器变量作用范围在本文件里,就你这种语义,可以用static,或者根本什么都不用(当然这不是个好的编程习惯)

vazor 发表于 2012-8-15 01:41:13

好好看看c书籍的作用域章节吧,骚年

creolophuss 发表于 2012-8-15 12:08:02

#include <stdio.h>
int k;
void push(int *p,int a)
{
   extern int k;
   p=a;
   }
   
;
int main()
{
    extern int k;
k=0;int a=10;
    int D={0};
    push(D,a);
    printf("hello");
    }

镕羽 发表于 2012-8-16 00:16:29

jose 发表于 2012-8-14 23:24 static/image/common/back.gif
extern 告诉编译器这个变量在别的文件里,如果你要使用extern变量,不需要在自己的文件里再声明int,当然就 ...

{:6_163:}谢谢赐教
页: [1]
查看完整版本: 大神帮忙看看这个 模拟 push的 代码哪里错了~~编译通过,运行却不行