精华内容
下载资源
问答
  • c语言二维数组

    千次阅读 2018-07-16 17:02:41
    字符串:是块常量空间 1、系统会在字符串末尾添加\0 (无论末尾是否添加\0,都会添加\0)二维和多维数组: 二维数组定义:类型 数组名[][列]; 空间长度:sizeof(int)**列 元素个数: *列 引用元素:需要...
     字符串:是一块常量空间
     1、系统会在字符串末尾添加\0  (无论末尾是否添加\0,都会添加\0)
    二维和多维数组:
     二维数组定义:类型 数组名[行][列];
     空间长度:sizeof(int)*行*列
     元素个数: 行*列
     引用元素:需要确定哪一行哪一列的元素  数组[行][列]
      注:列从0开始

     

    4、按照以下方法求数字:从每行中选取最大数,并查找最大数

    的最小数。


    思想:先将每行最大取回来存入数组,然后在数组中去出最小数

    #include<stdio.h>
    void main()
    {       int i=0,j=0,k=0,max=0;
            int buf1[5];
            int buf[5][5]={{91,92,93,94,95},\
                             {21,22,23,24,25},\
                             {31,32,33,34,35},\
                             {57,58,59,54,55},\
                             {66,67,68,69,64}};
            max=buf[0];
            for(i=0;i<5;i++)
            {
                    for(j=0;j<5;j++)
                    {
                            if(max<buf[i][j])
                            {
                                    max=buf[i][j];
                            }
                            if(j==4)
                            {
                                    buf1[k]=max;
                                    k++;
                                    break;
                            }
                    }
                    max=0;
            }
            max=buf1[0];
            for(i=1;i<5;i++)
            {
                    if(max>buf1[i])
                    {
                            max=buf1[i];
                    }


            }
            printf("%d",max);
    }

    展开全文
  • C语言指针引用二维数组

    千次阅读 2016-12-07 16:53:11
    1.二维数组的元素: a[0][1] 2.二维数组的地址: 2.1 0行首地址:a 2.2 10列元素地址:a[1] 2.3 1行首地址 : a+1 二.用地址符(当然只能表示数组的地址) 1.0行首地址:&a[0] 2.元素

    最近看谭浩强的《C程序设计》,第248页 例8.11 看到这里例子感觉有点懵,所以根据这个例子自己总结了下:
    一.不用取地址符和指针
    1.二维数组的元素: a[0][1]
    2.二维数组的地址:
    2.1 0行首地址:a
    2.2 1行0列元素地址:a[1]
    2.3 1行首地址 : a+1
    二.用取地址符(当然只能表示数组的地址)
    1.0行首地址:&a[0]
    2.元素地址:&a[0][1]
    三.用指针(用指针无法指向某行的首地址)
    1.元素值:* (*(a+0)+1)
    2.元素地址:*(a+2)+0

    写一个测试程序:

    #include <stdio.h>
    int main()
    {
        int a[3][4] = {1,2,3,4,5,6,7,8,9,12,13,0};
        printf("----------------------\n");
        printf("不用指针和取地址符\n");
        printf("%d,%d,%d,%d\n",a[0][1],a,a[1],a+1);
        printf("用取地址符\n");
        printf("%d,%d\n",&a[0][1],&a[1]);
        printf("用指针\n");
        printf("%d,%d\n",*(a+2)+0,*(*(a+0)+1));
        getchar();
    
    }

    结果:
    这里写图片描述

    展开全文
  • C语言二维数组的指针及首地址问题

    千次阅读 2014-07-06 16:11:33
    同样的道理,arr是二维数组名时,*arr也是arr的第个元素,但是此时arr所指的元素是维数组,所以,实际上arr所指元素是一维数组的首地址。 就按arr[3][4]这个例子来看:34列数组arr可以理解为arr[0],ar

    若arr是一维数组名,我们知道*arr就是arr[0],就是*(arr+0)。因为arr是数组的首地址,*arr就是取首地址所指元素,就是数组的第一个元素。
    同样的道理,arr是二维数组名时,*arr也是取arr的第一个元素,但是此时arr所指的元素是一个一维数组,所以,实际上arr所指元素是一维数组的首地址。
    就按arr[3][4]这个例子来看:3行4列数组arr可以理解为arr[0],arr[1],arr[2]这三个一维数组(数组含有4个元素)构成的二维数组,*arr就是arr[0],而arr[0]就是第0行的首地址,也就是第一个数组的首地址。*(arr+i)就是arr[i],就是第i行的首地址。
    如果现在定义arr是字符型数组,输出*arr(也就是第一行的首地址)为0000,再输出*(arr+1)就是0004,而不是0001,就可以说明arr是指向一维数组的指针。

    例子1:

    // C++中的二维数组.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
    
    	printf("%d\n", sizeof(a));  //48
    	printf("%d\n", sizeof(a[0])); //16
    	printf("%d\n", sizeof(a[1])); //16
    	printf("%d\n", sizeof(a[2])); //16
    	printf("*************************\n");
    	printf("%d\n", sizeof(*a)); //16
    	printf("%d\n", sizeof(*(a+1))); //16
    	printf("%d\n", sizeof(*(a+2))); //16
    	
    	for(int i=0; i <3; i++)
    	{
    		int *p =a[i];  //第i行首地址
    		for(int j=0; j < 4; j++)
    			printf("%d\t", p[j]);
    		printf("\n");
    	}
    	
    
    	return 0;
    }
    


    展开全文
  • c语言二维数组元素引用和参数传递

    千次阅读 2012-09-22 22:56:34
    这个二维数组,如果我想第2第3列数据, 可以直接是a[2][3]。除了这种方式外,我还可以: *(*(a + 2) + 3)(E1)。这同样取出了a[2][3]。我还可以使用种违反常规,但是也正确方法:*((*a) + 2 * 4 + 3)(E2)。...

      在学习C语言中,多维数组元素应用有许多不同的方式。其中以二维数组最为常见。例如声明数组 int a[3][4]。这个二维数组,如果我想取第2行第3列数据, 可以直接是a[2][3]。除了这一种方式外,我还可以:  *(*(a + 2) + 3)(E1)。这同样取出了a[2][3]。我还可以使用一种违反常规,但是也正确的方法:*((*a) + 2 * 4 + 3)(E2)。

      无论是上面的什么方法,其本质东西是一样的。

      在讨论本质之前,我们来看二维数组作为参数传递的问题:

      一个函数f现在需要一个二维数组作为其参数,传递方式为:

      1.  f(int a[3][4], ...)

      2. f(int a[][4], ...)

      3. f(int (*p)[4], ...))

    方式1比较简单。方式2和方式3其实是一样的。其实 int (*p)[4],p代表一个指针,该指针指向一个数组,该数组含有4个整型元素。而我们解读a,也可以把它看做是一个指针,它也指向一个数组,数组含有4个元素,和p完全一样。 a + 1, 和 p + 1其实指向了我们看到数组的第2行。因为对于一个指针x,x + 1,它们之间的差值是由它们指向的数据大小决定的。例如一个指针char *pc. pc的值为0x000001。则pc + 1的值为0x000002。而int *pi. pi 值为0x000001,则pi  + 1的值为0x000005。因为字符型占一个字节,而整型占4个字节。大家想一想,a 和p指向的不是一个数,而是一个数组,所以p + 1和p之间的差值为4 * 4。a也是一样。

        明白了上面的意思后,我们来看E1,为了取a[2][3],先是a + 2,取第2行,然后 *(a + 2),这同样是一个指针,该指针指向一个整型数据,也就是4个字节,然后*(a + 2)  + 3,该指针想后移动3个位置,这同时是个指针,该指针已经指向了a[2][3],对其解引用,*(*(a + 2) + 3),就获得了a[2][3]。

      同样的道理,E2就留给读者自己分析吧。

    吐舌头

     

     

    展开全文
  • 题目:计算二维数组的边界元素之和 思路: 1.利用对称性原理,减少一半的遍历量 2.如果不是第一行或最后一行,则只第一个元素及其坐标对称的元素#include "stdafx.h" #include #include <math.h>void main() {...
  • 2) 数组名表示该二维数组的首地址,从首地址开始,依次存入第一行、第二行…. 3) 每一行的存储方式,从首地址开始,依次存入第一个元素、第二个元素….. 4) 每个字节占用相同的字节数【字节决于数组类型】 5...
  • 第0个元素是一维数组,第0第0列是某个元素; b[]不能写具体数,不然就会自动补零,变成字符串; 面试:出现乱码因为%s遇到结束字符才会停止内容 常用初始化格式 使用time()函数,需要包含头文件time...
  • 今早分享的是函数~二维数组的程序设计: 1.题目: 函数fun的功能是先从键盘输入个3、3列的矩阵的各个元素的值,然后输出主对角线元素之和. ~ 2.图片注释: 第张图:代码及注释 第二张图:程序运行界面 第三...
  • 1.计算数组元素个数:数组内元素个数=数组整体大小/数组类型大小,Eg. sizeof(a)/sizeof(a[0]); 2.scanf中合法分隔符:空格,回车,TAB键 3.printf打印地址:%p,Eg....二维数组:* ((a+i)+j)=a[ i ][ j ];(
  • (12)数组

    2017-02-10 15:20:48
    数组是由类型相同数据元素...二维数组有两种存储方式,是以序为主序存储方式;二是以列序为主序存储方式。C语言序为主序存储方式。  设每个元素占用L个存储单元,在C语言中假设已定义了个二维
  • 作者 : 卿笃军 你有没有想过,对维数组名地址,然后用这个地址进行加减运算。这会出现什么样的结果呢? 演示样例: ...为什么第二行须要强制转化类型呢?...答:a是一维数组的名字,...
  • 二维数组的元素也称为双下标变量,其表示的形式为:  数组名[下标][下标]  其中下标应为整型常量或整型表达式。例如: a[3][4] 表示a数组三四列的元素。下标变量和数组说明在形式中有些相似,但这两者具有完全...
  • C语言学习10

    2016-08-10 19:46:51
    *p代表的是行元素的首地址,当时不清楚的时候还以为是一个值,这就与一维数组的区别,因为二维数组的话取得数组a的地址是第一行不可能是值,所以打印出来的是地址,期间还把函数和其他相关知识点给复习了一下,接...
  •  二维数组的元素也称为双下标变量,其表示的形式为: 数组名[下标][下标] 其中下标应为整型常量或整型表达式。例如: a[3][4] 表示a数组三四列的元素。下标变量和数组说明在形式中有些相似,但这两者具有完全不同...
  • 1)指向二维数组的指针,如指向int a[3][4] 的指针int (*p)[4],p指的是第0个地址(注意是地址),(p+1)指的是第1个地址,以此类推; *( *(p+i)+j)表示第i第j列的元素。 二维数组本质也是维数组。每...
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    6.18 当我向个接受指针的指针的函数传入二维数组的时候,编译器报错了。 6.19 我怎样编写接受编译时宽度未知的二维数组的函数? 6.20 我怎样在函数参数传递时混用静态和动态多维数组? 数组的大小 6.21 当...
  • C语言基础学习(3)

    2019-01-28 22:35:48
    一、二维数组 符号意义: int a[3][4] ; 其中a为数组名,也是地址,表示首行地址,单位是一行; &amp;amp;a表示数组地址,单位为一个数组; &amp;amp;a[i][j]——i行第j列元素地址 a——数组...
  • 1.24 我在个文件中定义了个extern数组,然后在另个文件中使用,为什么sizeof不到数组的大小? 声明问题 1.25 函数只定义了次,调用了次,但编译器提示非法重声明了。 1.26 main的正确定义是什么?void ...
  • 014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 ...
  • 实例14 求解二维数组的最大/最小元素 实例15 利用数组求前n个质数 实例16 编制万年历 实例17 对数组元素排序 实例18 任意进制数的转换 实例19 判断回文数 实例20 求数组前n个元素之和 实例21 求解钢材切割的...
  • 3数组与指针(把二维数组作为函数形参,则需要传进它地址,即int (*p)[length]) 4获取按键消息(getch()从控制台无回显地取一个字符,kbhit()判断是否有按键消息) 三、工程介绍 代码量大小为1100左右,...
  • 014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较...
  • c语言经典案例

    2014-10-30 08:06:57
    实例184 输出二维数组一行 任一列值 260 实例185 将若干字符串按照字母 顺序输出 262 实例186 用指向函数指针比较大小 263 实例187 寻找指定元素指针 265 实例188 字符串匹配 266 第12章 常用数据结构 269 ...
  • 6.18 当我向个接受指针的指针的函数传入二维数组的时候,编译器报错了。  6.19 我怎样编写接受编译时宽度未知的二维数组的函数?  6.20 我怎样在函数参数传递时混用静态和动态多维数组?  数组的大小  6.21...
  •  1.24 我在个文件中定义了个extern数组,然后在另个文件中使用,为什么sizeof不到数组的大小? 声明问题 1.25 函数只定义了次,调用了次,但编译器提示非法重声明了。 *1.26 main的正确定义是...
  •  实例14 求解二维数组的最大/最小元素   实例15 利用数组求前n个质数   实例16 编制万年历   实例17 对数组元素排序   实例18 任意进制数的转换   实例19 判断回文数  实例20 求数组前n个...

空空如也

空空如也

1 2 3 4
收藏数 72
精华内容 28
关键字:

c语言取二维数组的一行

c语言 订阅