찾다
백엔드 개발C#.Net 튜토리얼C 언어에서 2차원 배열이 메모리에 저장되는 순서는 무엇입니까?

메모리에서 2차원 배열의 저장 순서는 행 단위입니다. 즉, 한 행이 배치된 후 두 번째 행이 배치됩니다. 즉, "a[0]" 행이 먼저 저장됩니다. 그런 다음 "a[1]" 행이 저장됩니다. 그런 다음 모든 요소가 배치될 때까지 "a[2]" 행을 저장합니다.

C 언어에서 2차원 배열이 메모리에 저장되는 순서는 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, c99 버전, Dell G3 컴퓨터.

2차원 배열 정의의 일반적인 형식은 다음과 같습니다.

dataType arrayName[length1][length2];

여기서 dataType은 데이터 유형이고, arrayName은 배열 이름이고, length1은 첫 번째 차원 첨자의 길이이고, length2는 두 번째 차원 첨자의 길이입니다. .

2차원 배열은 행과 열이 있는 Excel 테이블로 생각할 수 있습니다. length1은 행 수를 나타내고 length2는 2차원 배열에서 요소를 찾으려면 행과 열 수를 모두 나타냅니다. 열을 지정해야 합니다. 예:

int a[3][4];

는 총 3×4=12개의 요소로 구성된 3개의 행과 4개의 열로 구성된 2차원 배열을 정의합니다. 배열 이름은 a입니다. 즉,

a[0][0], a[0][1], a[0][2], a[0][3]
a[1][0], a[1][1], a[1][2], a[1][3]
a[2][0], a[2][1], a[2][2], a[2][3]

요소를 표현하려는 경우입니다. 행 2와 열 1에는 [2][1]을 작성해야 합니다.

2차원 배열을 x축과 y축이 있는 좌표계로 생각할 수도 있습니다. 평면의 한 점을 결정하려면 x축과 y축을 모두 알아야 합니다.

2차원 배열은 개념적으로 2차원이지만 메모리에 연속적으로 저장됩니다. 즉, 2차원 배열의 요소는 서로 간격 없이 나란히 있습니다. 그렇다면 선형 메모리에 2차원 배열을 저장하는 방법은 무엇일까요? 두 가지 방법이 있습니다.

  • 하나는 행별로 정렬하는 것입니다. 즉, 한 행을 배치한 후 두 번째 행을 배치합니다. 배치되면 두 번째 행이 List로 배치됩니다.

  • C 언어에서는 2차원 배열을 행으로 배열합니다.
  • 즉, a[0] 행이 먼저 저장되고, 그 다음 a[1] 행이 저장되고, 마지막으로 a[2] 행이 저장됩니다. 각 행의 4개 요소도 순서대로 저장됩니다. 배열 a는 int 유형이고 각 요소는 4바이트를 차지하며 전체 배열은 총 4×(3×4)=48바이트를 차지합니다.

이렇게 생각하시면 2차원 배열은 같은 길이의 1차원 배열 여러 개로 구성됩니다.

예:

스터디 그룹에 5명이 있고, 각 사람은 3개 과목의 시험 점수를 가지고 있으며, 각 과목의 평균 점수와 그룹의 전체 평균 점수를 구합니다.

--수학8061857 6이 질문에 대해 2차원 배열 a[5][3]은 3개 과목의 5명의 점수를 저장하고, 1차원 배열 v[3]을 정의하여 각 과목의 평균 점수를 저장한 후 변수 평균을 정의한다. 총 평균 점수를 저장합니다. 최종 프로그래밍은 다음과 같습니다:
#include <stdio.h>
int main(){
    int i, j;  //二维数组下标
    int sum = 0;  //当前科目的总成绩
    int average;  //总平均分
    int v[3];  //各科平均分
    int a[5][3];  //用来保存每个同学各科成绩的二维数组
    printf("Input score:\n");
    for(i=0; i<3; i++){
        for(j=0; j<5; j++){
            scanf("%d", &a[j][i]);  //输入每个同学的各科成绩
            sum += a[j][i];  //计算当前科目的总成绩
        }
        v[i]=sum/5;  // 当前科目的平均分
        sum=0;
    }
    average = (v[0] + v[1] + v[2]) / 3;
    printf("Math: %d\nC Languag: %d\nEnglish: %d\n", v[0], v[1], v[2]);
    printf("Total: %d\n", average);
    return 0;
}
실행 결과: 프로그램은 중첩 루프를 사용하여 모든 과목에서 모든 학생의 점수를 읽습니다. 내부 루프에서는 특정 과목의 각 학생의 점수를 순서대로 읽어서 이 점수를 누적하고, 내부 루프를 빠져나간 후(외부 루프로 진입) 누적된 점수를 5로 나누어 v[i]로 보낸다. ] 는 해당 강좌의 평균 점수입니다. 외부 루프는 총 3회 반복되며, 세 과목 각각의 평균 성적을 계산하여 배열 v에 저장합니다. 모든 루프가 완료된 후 v[0], v[1], v[2]를 더하고 3으로 나누어 전체 평균 점수를 얻습니다. 관련 추천: ""
C English Zhang Tao
75 92 Wang Zhenghua
65 71 이자오쿳안
87 90 저우 멍젠
77 85
Input score:
80 61 59 85 76 75 65 63 87 77 92 71 70 90 85↙
Math: 72
C Languag: 73
English: 81
Total: 75
C 언어 비디오 튜토리얼

위 내용은 C 언어에서 2차원 배열이 메모리에 저장되는 순서는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
(超详细)VScode中配置C语言环境的方法(超详细)VScode中配置C语言环境的方法Dec 05, 2022 pm 07:05 PM

VScode中怎么配置C语言环境?下面本篇文章给大家介绍一下VScode配置C语言环境的方法(超详细),希望对大家有所帮助!

c语言中node是什么意思c语言中node是什么意思Jul 06, 2022 pm 03:51 PM

在C语言中,node是用于定义链表结点的名称,通常在数据结构中用作结点的类型名,语法为“struct Node{...};”;结构和类在定义出名称以后,直接用该名称就可以定义对象,C语言中还存在“Node * a”和“Node* &a”。

c语言怎么将数字转换成字符串c语言怎么将数字转换成字符串Jan 04, 2023 pm 03:20 PM

c语言将数字转换成字符串的方法:1、ascii码操作,在原数字的基础上加“0x30”,语法“数字+0x30”,会存储数字对应的字符ascii码;2、使用itoa(),可以把整型数转换成字符串,语法“itoa(number1,string,数字);”;3、使用sprintf(),可以能够根据指定的需求,格式化内容,存储至指针指向的字符串。

c语言开根号运算符是什么c语言开根号运算符是什么Mar 06, 2023 pm 02:39 PM

在c语言中,没有开根号运算符,开根号使用的是内置函数“sqrt()”,使用语法“sqrt(数值x)”;例如“sqrt(4)”,就是对4进行平方根运算,结果为2。sqrt()是c语言内置的开根号运算函数,其运算结果是函数变量的算术平方根;该函数既不能运算负数值,也不能输出虚数结果。

c语言数组如何初始化c语言数组如何初始化Jan 04, 2023 pm 03:36 PM

C语言数组初始化的三种方式:1、在定义时直接赋值,语法“数据类型 arrayName[index] = {值};”;2、利用for循环初始化,语法“for (int i=0;i<3;i++) {arr[i] = i;}”;3、使用memset()函数初始化,语法“memset(arr, 0, sizeof(int) * 3)”。

c语言合法标识符的要求是什么c语言合法标识符的要求是什么Aug 27, 2020 pm 01:47 PM

c语言合法标识符的要求是:1、标识符只能由字母(A~Z, a~z)、数字(0~9)和下划线(_)组成;2、第一个字符必须是字母或下划线,不能是数字;3、标识符中的大小写字母是有区别的,代表不同含义;4、标识符不能是关键字。

c语言中源文件编译后生成什么文件c语言中源文件编译后生成什么文件Nov 23, 2022 pm 07:44 PM

c语言编译后生成“.OBJ”的二进制文件(目标文件)。在C语言中,源程序(.c文件)经过编译程序编译之后,会生成一个后缀为“.OBJ”的二进制文件(称为目标文件);最后还要由称为“连接程序”(Link)的软件,把此“.OBJ”文件与c语言提供的各种库函数连接在一起,生成一个后缀“.EXE”的可执行文件。

c语言可以处理的文件类型是什么c语言可以处理的文件类型是什么Sep 19, 2022 pm 03:53 PM

c语言可以处理的文件类型是:文本文件和二进制文件。C语言所能够处理文件是按照存放形式分为文本文件和二进制文件:1、文本文件存储的是一个ASCII码,文件的内容可以直接进行输入输出;2、二进制文件直接将字符存储,不能将二进制文件的内容直接输出到屏幕上。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구