如何在C语言中以数组指针作为形参输出数组

如何在C语言中以数组指针作为形参输出数组,第1张

数组 与 普通指针 的区别:
1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。
2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是"可变",所以我们常用指针来 *** 作动态内存。
3、当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。

因为第三条,当把数组名作为函数的形参进行传递时,该效果等同于传递一个同类型的指针。直接在程序当中调用 函数名(数组名)即可。

例程:

#include<stdioh>
int a[]={1,2,3,4,5,6};
void print(int a[]){//数组指针作为形参
    for(i=0;i<6;i++) printf("%d ",a[i]);//输出数组
}
int main(){
    print(a);//传入数组名
    return 0;
}


#include<stdioh>
#include<timeh>
#define N 5
int  main()
{
int i,n,a[N];
srand((unsigned)time(NULL));//初始化随机种子
for(i=0;i<N;i++)
{
a[i]=rand()%100+1;//随机生成100以内整数
printf("%d      ", a[i]); //输出中不要加 \n 断行符即可一排输出
//适当加上空格,可以间隔开来
}
return 0;
}

c语言,用printf输出一维数组的语句是printf ("%s", a),具体输出一维数组的 *** 作步骤如下:

1、首先我们打开Visual Studio 2010软件,新建一个项目。

2、然后我们按照图示代码输入包含程序需要用到的头文件。

3、然后我们按照图示代码输入主函数main。

4、然后我们按照图示代码定义一个一维数组。

5、然后我们按照图示代码定义一个数组指针。

6、然后我们按照图示代码输入数组指针指向一维数组。

7、然后我们按照图示代码输入for循环。

8、最后打印出结果即可。

1在你的程序中有这么一句for(i=9;i<=9;i++)
{
for(r=9;r<=9;r++)
在for循环语句中表达式1,也就是相当于i=0;这一句,初值表达式,是对循环变量赋初值的,输出a[i][r]当然要从i=0,r=0开始。
2for循环中,表达式2,也就是本题中的i<9,是循环的条件,有时也可以说是循环的次数。
3注意,在数组中,下标的合理长度是[0,
数组长度减1]所以应该是
for(i=0;i<9;i++){
for(r=0;r<9;r++)
修改后如下:
#include"stdioh"
void
main()
{
int
a[9][9]={
{10,11,15,19,18,45,66,22,99},
{50,40,61,85,67,41,63,51,30},
{25,29,84,66,11,26,18,59,19},
{10,88,98,89,31,36,39,28,32},
{22,34,41,32,75,73,78,45,11},
{12,35,38,23,21,59,17,44,47},
{31,41,16,76,91,16,14,67,42},
{49,54,59,56,87,78,25,26,93},
{60,34,34,32,56,33,38,37,95}
},i,r;
for(i=0;i<9;i++){
for(r=0;r<9;r++)
printf("%3d",a[i][r]);
printf("\n");
}
}
运行结果为:
不明白,还可以问啊!

/
参数说明
arr: 必需的。要输出的数组指针。
arrsize: 必需的。要输出的数组大小。该数字必须为偶数,否则无法输出。
/
#include <stdioh>
void printintarr(int  arr, int arrsize)
{
    int i;
    if (arrsize % 2 == 0)
        for (i = 0; i < arrsize; i += 2)
        {
            printf("(%d, %d)", arr[i], arr[i + 1]);
            if (i != arrsize - 2)
                printf(", ");
        }
}

提供两个办法:
1在主调函数中建立数组,将数组指针传给自定义的函数,处理后主调函数中的数组值也就变化了。
void fun(int a[],int n){

}//其中a[]就是要输入的数组,n是这个数组的长度。
void main(void){
int arry[10]={1,2,3,4,5,6,7,8,9,0};
fun(arry,10);

}
2可以在主调函数中建立数组并把首地址和长度传给函数,在函数中创建一个动态数组,处理完后把动态数组的首地址返回主调函数,最后在主调函数中释放动态申请的内存。
int fun(int a[],int n){
int p=(int )malloc(nsizeof(int));//申请内存
if(!p){//判断是否申请成功
printf("failure骇笭粪蝗荼豪讽通釜坤");
exit(0);
}
memcpy(p,a,nsizeof(int));//把主调函数的数组拷贝过来

return p;
}
void main(void){
int arry[10]={1,2,3,4,5,6,7,8,9,0},ptmp;
ptmp=fun(arry,10);

free(ptmp);//释放申请的空间
}
数组的内容是不能一一传给函数的……


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13349624.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-19
下一篇 2023-07-19

发表评论

登录后才能评论

评论列表(0条)

保存