我有这段代码:
#include <stdio.h>
void sample(int b[3])
{
//access the elements present in a[counter].
for(int i=0;i<3;i++)
printf("elements of a array are%d\n",b[i]);
}
int main()
{
int count =3;
int a[count];
int i;
for(i=0;i<count;i++)
{
a[i]=4;
}
for(i=0;i<count;i++)
{
printf("array has %d\n",a[i]);
}
sample(//pass the array a[count]);
}
我希望通过将其作为此函数的参数传递,在main()
之外的用户定义函数中访问此main函数中声明的数组。我怎么能这样做?
答案 0 :(得分:2)
期望它的函数通常必须知道数组的位置和大小。为此,您需要将指针传递给数组的第一个元素。
您的示例功能看起来像
void sample(int *b, size_t count) {
for(int i = 0; i < count; i++) {
printf("elements of a array are%d\n",b[i]);
}
}
您可以通过将指针传递给第一个元素来“传递”数组,当然也可以传递数组的长度。
sample(a, count);
如果可以确定数组的长度至少为3个元素,也可以通过省略count参数来简化这一过程。
答案 1 :(得分:1)
sample(a); //pass beginning address of array is same as sample(&a[0]);
功能声明
void sample(int b[]);
功能定义
void sample(int b[]) // void sample(int *b)
{
//access the elements present in a[counter].
//You can access array elements Here with the help of b[0],b[1],b[2]
//any changes made to array b will reflect in array a
//if you want to take SIZE into consideration either define as macro or else declare and define function with another parameter int size_array and From main pass size also
}
答案 2 :(得分:0)
将参数传递为sample(a);
但是这段代码不起作用。您不能使用变量作为数组大小传递。
#include<stdio.h>
#define SIZE 3
void sample(int b[]) {
//access the elements present in a[counter] .
for(int i=0;i<3;i++){
printf("elements of a array are%d\n",b[i]);
}
}
int main() {
int a[SIZE];
int i;
for(i=0;i<SIZE;i++){
a[i]=4;
}
for(i=0;i<SIZE;i++){
printf("array has %d\n",a[i]);
}
sample(a);
}
答案 3 :(得分:0)
数组总是作为参考传递。您需要将数组的地址传递给实际参数,并使用形式参数中的指针接受它。下面的代码应该适合你。
void sample(int *b) //pointer will store address of array.
{
int i;
for(i=0;i<3;i++)
printf("elements of a array are%d\n",b[i]);
}
int main()
{
int count =3;
int a[count];
int i;
for(i=0;i<count;i++)
{
a[i]=4;
}
for(i=0;i<count;i++)
{
printf("array has %d\n",a[i]);
}
sample(a); //Name of array is address to 1st element of the array.
}
答案 4 :(得分:0)
要将完整数组传递给函数,您需要传递其基址,即&amp; a [0]及其长度。您可以使用以下代码:
#include<stdio.h>
#include<conio.h>
void sample(int *m,int n)
{
int j;
printf("\nElements of array are:");
for(j=0;j<n;j++)
printf("\n%d",*m);
}
int main()
{
int a[3];
int i;
for(i=0;i<3;i++);
{
a[i]=4;
}
printf("\nArray has:");
for(i=0;i<3;i++)
{
printf("\n%d",a[i]);
}
sample(&a[0],3)
getch();
return 0;
}