今天自学了C语言函数一章,大体有个了解。但是还有很多问题,麻烦高手给我解释下!先谢谢各位了!
主要是我现在不理解数组,数组名,,指针变量,作为实参,是怎么进行传递的?我自己瞎写了个程序,是错的。麻烦高手就按我这个例子修改下,帮我讲解下数组,数组名,,指针变量,作为...
主要是我现在不理解数组,数组名,,指针变量,作为实参,是怎么进行传递的?我自己瞎写了个程序,是错的。麻烦高手就按我这个例子修改下,帮我讲解下数组,数组名,,指针变量,作为实参,是怎么进行传递的。下面就是我的两个程序,完全瞎写,帮改正,要详解哦!在此先谢谢大神了!
#include <stdio.h>
void Han(int *p)
{
printf("%d",p[0]);
}
void main()
{
int a[4]={"1,2,3,4"};
Han(a);
} 书上说直接把数组名作为实参,传递的是首元素的地址。我这个已经把首元素地址传过去了,为什么输不出来首元素呢?(程序都是错的,麻烦帮改正)
#include <stdio.h>
void Han(int p[4])
{
printf("%d",*p);
}
void main()
{
int a[4]={"1,2,3,4"};
Han(a[4]);
}
书上说把数组作为实参,传递的是数组的地址,我这个已经把数组地址传过去了,为什么也输不出来首元素呢?(程序都是错的,麻烦帮改正) 展开
#include <stdio.h>
void Han(int *p)
{
printf("%d",p[0]);
}
void main()
{
int a[4]={"1,2,3,4"};
Han(a);
} 书上说直接把数组名作为实参,传递的是首元素的地址。我这个已经把首元素地址传过去了,为什么输不出来首元素呢?(程序都是错的,麻烦帮改正)
#include <stdio.h>
void Han(int p[4])
{
printf("%d",*p);
}
void main()
{
int a[4]={"1,2,3,4"};
Han(a[4]);
}
书上说把数组作为实参,传递的是数组的地址,我这个已经把数组地址传过去了,为什么也输不出来首元素呢?(程序都是错的,麻烦帮改正) 展开
2个回答
展开全部
第一段代码只要把
int a[4]={"1,2,3,4"}; 改为 int a[4]={1,2,3,4};
就正确了
运行的结果是输入 1
第二段代码除了要把引号改掉外,
Han(a[4]); 也要改为 Han(a); 运行的结果是输出1,或者 Han(&a[4]);运行的结果是输出4
int a[4]={"1,2,3,4"}; 改为 int a[4]={1,2,3,4};
就正确了
运行的结果是输入 1
第二段代码除了要把引号改掉外,
Han(a[4]); 也要改为 Han(a); 运行的结果是输出1,或者 Han(&a[4]);运行的结果是输出4
追问
第一个懂了!第二个不是将数组作为参数传递的么?实参是数组,形参也是数组,传的不是数组各各元素的地址么?那么传递后*P就是首元素的值,为啥不对呢?我就像输出首元素的值,麻烦在详细讲解下第二个程序!
追答
不好意思,刚才写错了,应该是Han(&a[3]);
第二个你传的不是数组,而是数组的第五个元素
数组名 加上 方括号是指具体的某一个元素,下标
的值是从0开始的,如你此例
a[0]的值为1 a[1]的值为2 a[2]的值为3 a[3]的值为4
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询