大神帮忙看看这个 模拟 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");
}
请问 为什么运行结果会如图所示啊?
谢谢大家~~ extern int k;
这个是什么 void push(int *p,int a)
{
int k;
p=a;
}
这里面的k还没有初始化 callmesb 发表于 2012-8-14 19:19 static/image/common/back.gif
void push(int *p,int a)
{
int k;
extern 加了后 貌似代表这个变量可以一、通用
我在main函数里初始化了
那运行结果貌似是写入内存错误,不过不晓得为什么 帮顶~~~同求答案~@~ {:5_134:}同求答案。。 镕羽 发表于 2012-8-14 19:34 static/image/common/back.gif
extern 加了后 貌似代表这个变量可以一、通用
我在main函数里初始化了
主函数里的K和push里的K是分别定义的变量啊。你这K又不是全局变量,所有地方都能用,刚试了一下,在push给k初始化能成功运行 #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;
}
你看看这样改符合你要求么
callmesb 发表于 2012-8-14 19:53 static/image/common/back.gif
#include
int k;
void push(int *p,int a)
为什么 加extern 不行?表明 k 这个 参数 什么文件都可以用啊
肿么一运行就出现那图了呢 镕羽 发表于 2012-8-14 20:04 static/image/common/back.gif
为什么 加extern 不行?表明 k 这个 参数 什么文件都可以用啊
肿么一运行就出现那图了呢
extern貌似是调用别的文件里的参数哦。。。 本帖最后由 maxOrder石 于 2012-8-14 21:10 编辑
松子说的是对的,extern只是引用的,据我所知,静态变量和全局变量在c中系统是自动初始化为0的,还有push函数里的k是局部变量,函数调用结束会消亡,作为push,肯定要将k定为全局变量。 牛 !!!!!!!!!!!!!!!!!! 擦 什么东西啊!!!! extern 告诉编译器这个变量在别的文件里,如果你要使用extern变量,不需要在自己的文件里再声明int,当然就这个程序来说编译器会告诉你链接错误,因为“别的文件”不存在。
static 告诉编译器变量作用范围在本文件里,就你这种语义,可以用static,或者根本什么都不用(当然这不是个好的编程习惯) 好好看看c书籍的作用域章节吧,骚年 #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");
} jose 发表于 2012-8-14 23:24 static/image/common/back.gif
extern 告诉编译器这个变量在别的文件里,如果你要使用extern变量,不需要在自己的文件里再声明int,当然就 ...
{:6_163:}谢谢赐教
页:
[1]