在C中以单独函数打印数组
我试图通过将四个数组中的值发送到一个单独的函数来打印它们。但是,问题是我无法让函数打印数组中的所有整数,因为我不确定我可以在在C中以单独函数打印数组,c,arrays,function,C,Arrays,Function,我试图通过将四个数组中的值发送到一个单独的函数来打印它们。但是,问题是我无法让函数打印数组中的所有整数,因为我不确定我可以在for循环中将condition语句设置为什么,这对于任何大小的数组都是通用的 现在该函数只打印前11个数字。我想这是因为数组中的第一个数字是11 #include <stdio.h> void print_array(int a[]); void find_max(int b[]); void find_min(int c[]);
for
循环中将condition语句设置为什么,这对于任何大小的数组都是通用的
现在该函数只打印前11个数字。我想这是因为数组中的第一个数字是11
#include <stdio.h>
void print_array(int a[]);
void find_max(int b[]);
void find_min(int c[]);
void search(int d[]);
void SORT(int e[]);
int main(void)
{
int first[11] = {7,7,7,7,7,7,7,7,7,7,7};
int second[14] = {11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2};
int third[16] = {-2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int fourth[23] = {-3, 4, 33, 22, 9, -100, 2, 56, 57, 55, 2, 90, 2234, 32, 8, 123, 2, 33, 22, 22, 33, -1, -3};
print_array(&second[0]);
return(0);
}
void print_array(int a[])
{
int i;
for(i=0;i<*a;i++)
{
printf("%d ",a[i]);
}
}
#包括
无效打印_数组(int a[]);
void find_max(int b[]);
void find_min(int c[]);
无效搜索(int d[]);
无效排序(int e[]);
内部主(空)
{
int first[11]={7,7,7,7,7,7,7,7,7,7};
int second[14]={11,10,9,8,7,6,5,4,3,2,1,0,-1,-2};
int third[16]={-2,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13};
int-fourth[23]={-3,4,33,22,9,-100,2,56,57,55,2,90,2234,32,8,123,2,33,22,22,33,-1,-3};
打印数组(&秒[0]);
返回(0);
}
无效打印_数组(int a[])
{
int i;
对于(i=0;i向函数传递第二个参数,该参数采用数组的长度。例如:
print_array(int *array, int length)
{
for (int i = 0; i < length; i++) { /* whatever */ }
}
print_数组(int*数组,int长度)
{
对于(int i=0;i
函数无法知道数组何时结束。除非手动传递,否则这段数据根本不存在。数组只是内存中的一个字节序列,没有结束分隔符。因此,应该向函数添加一个参数,告诉它数组的长度
是的,这就是它在C中的工作方式。将函数更改为:
void print_array(int a[], size_t a_size) {
int i;
for(i=0; i< a_size;i++)
// ...
它将计算数组的内存大小(对于32位系统上的4 int数组,它将是16)并除以int的大小(对于32位系统,它是4字节)。在C中,您可以使用函数和宏进行设置:
void printArray_(int *a, int len) {
for (int i = 0; i < len; i++) printf("%d ", a[i]);
}
#define printArray(arr) printArray_((arr), sizeof(arr)/sizeof(arr[0]))
int main(int argc, _TCHAR* argv[])
{
int data[] = { 1,2,3,4 };
printArray(data);
return 0;
}
换行
print_array(&second[0]);
到
因为,
&第二个[0]只是将引用传递给第0个位置的元素,该元素将无法遍历数组
如果没有大小,我们无法遍历通过引用传递的数组。由于存在大小不同的数组,我们可以通过
int array_length = sizeof(array)/sizeof(array[0]);
换线
void print_array(int a[])
到
阵列打印的功能如下:
void print_array(int *a,int array_length){
int i;
for(i=0;i<array_length;i++){
printf("%d ",*a);
a++; //for incrementing the position of array.
}
}
void打印数组(int*a,int数组长度){
int i;
对于(i=0;i是否可以将数组方括号[]中的值赋给变量?@Mike确切地说,您应该以某种方式让程序知道此值,例如,将其赋给变量。如果您在接收指向char参数指针的函数中调用此值,它将失败,因为sizeof(arr)
调用将返回sizeof(char*)
,原因是。
int array_length = sizeof(array)/sizeof(array[0]);
void print_array(int a[])
void print_array(int *a,int array_length)
void print_array(int *a,int array_length){
int i;
for(i=0;i<array_length;i++){
printf("%d ",*a);
a++; //for incrementing the position of array.
}
}