C语言问题

将输入的10个数存在a[0]~a[9]中inta[10],i;printf("entherthearray\n");for(i=0;i<10;i++)scanf("%d"... 将输入的10个数存在a[0]~a[9]中
int a[10],i;
printf("enther the array\n");
for(i=0;i<10;i++)
scanf("%d",a);

scanf("%d",a);

1. 需要加&取地址符号么

int a[10],i;
printf("enther the array\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);

2.为什么这里要加取地址符号

3.动态数组:如果一个程序包含若干个函数,每个函数中的局部变量的生存期并不等于整个程序的执行周期,它只是程序执行周期的一部分。 这句话什么意思?

4.C语言中自动的,静态的,寄存器的,外部的有什么区别。。? 那他们和VB中的自动,静态,动态,全局又有什么区别?

回答好的另外加分!!
展开
 我来答
flyingwen
2008-11-17
知道答主
回答量:8
采纳率:0%
帮助的人:0
展开全部
1、2。需要。因为C语言的函数不能引用传递参数,所以必须将变量的地址告诉scanf,scanf才知道将结果放在哪

3.C语言不支持动态决定数组大小。如果一个变量是局部变量,那么如果你对以同一个函数多次调用(包括嵌套调用),每次调用中使用的这个变量都是重新建立的,不会继承上次调用的结果

4.
首先解释以下变量在内存中存储的方式。一种是放在固定的内存位置,这种方式可以称作堆存放。另外一种是每次用到该变量时,临时在内存中找到一个位置存放该变量,变量使用结束后,用来存放它的内存也就被回收了,这种方式可以称作栈存放
两种存贮方式决定了他们的生命期:堆存放的变量的值是长久保存的,栈存放的变量是临时的,函数结束了,他们的值也就消失了

auto:由编译器决定该变量在内存中的存储方式。如果是全局变量,采用堆存贮方式,如果是局部变量,采用栈存储方式

static:对于全局变量使用static,表示这个全局变量不能被其他文件中的代码引用。对于局部变量使用static,表示用堆方式存储该变量。

register:该变量被优先放到寄存器中。如果你不清楚什么是寄存器,可以将它理解为数量少而速度块的内存。把经常使用的变量放到寄存器中存储可以提高程序的速度,因为寄存器更快。不过一般写代码不用考虑这个register,因为这些事情编译器自己会搞定

extern:该变量是在别的文件中定义的,本文件中将会引用这个变量

VB中的自动、静态、动态、全局的含义和C中是一样的

希望解释的清楚,还有不明白的欢迎提问
sd13454671489
2008-11-17 · TA获得超过299个赞
知道小有建树答主
回答量:318
采纳率:0%
帮助的人:0
展开全部
1.它是数组就可能要按照数组的方式输出.不只是输出字符.
2.它是在内存里面分配空间就需要地址符.
3,局部变量是只是在给编辑的一段程序中起作用而不影响到整个程序的运行.
4.这些理论上的东西.你看书还能更加明白.说是说不清楚的.而且.C语言.和VB相比肯定是VB简单很多.不过是不同的作用而已!
感觉你要学好C的话不只是理解理论.要实操才能学好的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
IceBlue_Cc
2008-11-17 · 超过19用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:48.7万
展开全部
1.不需要加
2.因为a[i]表示的是变量,不是指针,所以要加取地址符。
3.就是说局部变量只能在它所在的函数里起作用。
4.只是变量的贮存方式不同,和VB没什么区别。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
victorylaolao
2008-11-17
知道答主
回答量:20
采纳率:0%
帮助的人:16.1万
展开全部
1,需要。
2,scanf()必须加&
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
l4nneret
2008-11-17 · TA获得超过678个赞
知道小有建树答主
回答量:389
采纳率:0%
帮助的人:360万
展开全部
scanf("%d",a);
a 前面不需要加 &号;数组名本身就是地址;

scanf("%d",&a[i]);
a[i]是变量,不是地址,所以需要加&;

3、函数里面定义的局部变量,若不是用static声明的,就会随着函数的结束而“消失”(实际上就是出栈了)。明显的就不是整个程序的执行周期了。

4、 这个问题,建议翻书。

其实以上问题,翻书一下都能找到答案。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d6df92170
2008-11-17 · 超过10用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:0
展开全部
将输入的10个数存在a[0]~a[9]中
int a[10],i;
printf("enther the array\n");
for(i=0;i<10;i++)
scanf("%d",a);

scanf("%d",a);

1. 需要加&取地址符号么

int a[10],i;
printf("enther the array\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);

2.为什么这里要加取地址符号
上面这两个问题就是一个问题:
对问题1:scanf("%d",a);
a 是数组名,已经是地址,故不需要加&。
但是 for(i=0;i<10;i++)
scanf("%d",a);
的意思明显是想给数组10个元素赋值。现在这样是无法实现的,应该改为
for(i=0;i<10;i++)
scanf("%d",&a[i]);
也就问题 2 了。
实际上,scanf("%d",a);只能给第一个元素赋值,for()循环十次也就是给第一个元素 a【0】 赋值十次。

要说明的是 scanf("%d", 这里必须是地址 ); 问题 1 中是地址但是并不是我们需要的效果,故应改为 2 ;
& 这个符号意思的取址,将后面 a【i】的地址作为参数给 scanf();

问题 3:
意思是 函数中 局部变量并不是从程序开始执行就一直存在,只有当使用他的函数被调用的时候他才有可能被调用——他才有可能存在,否则对程序来说他是不存在的,更别说他有生存期了。
局部变量不存在,没有生存期就不对程序有什么影响了。
程序的执行周期就是程序的整个执行过程需要的时间,你可以这样认为。

问题 4:
C语言中自动的,静态的,寄存器的,外部的有什么区别。。?

静态变量是,声明他的函数消失的时候他任然存在,而且保留起其值,他只可以在第一次使用时被赋初始值,再次使用的时候对他赋初始值的 语句已经不被执行了。

寄存器变量,首先就是放在寄存器里面的变量,C中是没用寄存器变量的,所谓的寄存器变量实际上是一个等价变量。根本不必去在意,如你想使用,那也不一定会有你想想的哪么执行的快。
外部变量.就是在函数外部声明的变量,也称为全局变量。需要说明的是外部变量是只在声明他的文件里面有效。离开声明他的文件他还是不“存在的”;
自动变量,首先是局部变量,相对于外部变量而言的。

更详细的内容还是要看书的,一下子很难说明白。

VB 我不懂 ,很遗憾:
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式