栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言二维数组与指针和参数传递

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言二维数组与指针和参数传递

1.大小与参数传递

#include
//参数也可以是:int br[],int n
void print_ar(int (*br)[4],int row,int col)
//void print_ar(int [3][4],int row,int col)
//void print_ar(int [][4],int row,int col)
{ 
    sizeof(br);
    
    for(int i=0;i 

结果:

  1  2  3  4
  5  6  7  8
  9 10 11 12
8
48

2.练习题

#include
#include

int main()
{
    int ar[5][2]={1,2,3,4,5,6,7,8,9,10};
    int (*p)[2]=&ar[1];/
        ++i;
    }
    if(i == row)
    return -1;
    int j= col-1;
    while(j>=0 && val=0&&val == br[i][j])
    {
        pos=i*col+j;
    }
    return pos;
}

int main()
{
    int ar[4][5]=
    {
        2,4,6,8,10,
        12,14,16,18,20,
        24,27,29,32,33,
        38,45,56,78,90
    };
    int val;
    scanf("%d",&val);
    int pos=findvalue(ar,4,5,val);
    if(pos !=-1)
    {
	printf("第%d个元素n",pos+1);
    printf("行数:%d 列数:%dn",pos/5+1,pos%5+1);}
}

结果:

90
第20个元素
行数:4 列数:5

4.折半查询

#include
#include
int findvalue(int (*br)[5],int row,int col,int val)
{
    assert(br !=NULL);
    int * ip = (int*)br;
    int left=0,right=row*col-1;
    int pos=-1;
    while(left <= right)
    {
        int mid=(right-left)/2+left;
        if(valip[mid])
        {
            left=mid+1;
        }
        else
        {
            pos=mid;
            break;
        }
    }
    return pos;
}

int main()
{
    int ar[4][5]=
    {
        2,4,6,8,10,
        12,14,16,18,20,
        24,27,29,32,33,
        38,45,56,78,90
    };
    int val;
    scanf("%d",&val);
    int pos=findvalue(ar,4,5,val);
    if(pos !=-1)
    {
	printf("第%d个元素n",pos+1);
    printf("行数:%d 列数:%dn",pos/5+1,pos%5+1);}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/917411.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号