首页 > 其他分享 >C语言-数组

C语言-数组

时间:2024-11-26 23:58:14浏览次数:7  
标签:初始化 arr int Arr C语言 ++ 数组

数组的创建

数组结构式

数组类型 数组名称 数组大小 = 内容

列如

char Arr[3]={1,2,3}
int Arr[3]={1,2,3}

注意:在C99之前,【】中需要一个常量才可以

数组的初始化

初始化就是给它赋值,初始化分为完全初始化和非完全初始化

完全初始化:将值全部装完

非完全初始化:将值只装一部分

一维数组的使用

#include<stdio.h>
int main()
{
	int Arr[3] = { 1,2,3 };
	int i = 0;
	printf("%d\n", Arr[i]);
	return 0;
}

总结:一维数组是通过下标来访问的,并且下标总是从0开始

          数组的大小可以通过计算得到,列如

int arr[10];
int sz = sizeof(arr)/sizeof(arr[0]);
一维数组的存储

首先我们来看个列子

#include <stdio.h>
int main()
{
	int arr[10] = { 0 };
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);

	for (i = 0; i < sz; ++i)
	{
		printf("&arr[%d] = %p\n", i, &arr[i]);
	}
	return 0;
}

数组在内存中是连续存放的二维数组的

二位数组的创建和初始化
#include <stdio.h>
int main()
{
	int arr[3][4] = { 0 };
	int i = 0;
	for (i = 0; i < 3; i++)
	{
		int j = 0;
		for (j = 0; j < 4; j++)
		{
			arr[i][j] = i * 4 + j;
		}
	}
	for (i = 0; i < 3; i++)
	{
		int j = 0;
		for (j = 0; j < 4; j++)
		{
			printf("%d ", arr[i][j]);
		}
	}
	return 0;
}

二维数组的第一个方框表示行,第二个方框表示列,列如它的存储:

#include <stdio.h>
int main()
{
	int arr[3][4];
	int i = 0;
	for (i = 0; i < 3; i++)
	{
		int j = 0;
		for (j = 0; j < 4; j++)
		{
			printf("&arr[%d][%d] = %p\n", i, j, &arr[i][j]);
		}
	}
	return 0;
}

数组越界,指的是它的行跟列,也就是输入存储的元素在【X】【Y】的范围内,列如

#include <stdio.h>
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int i = 0;
	for (i = 0; i <= 10; i++)
	{
		printf("%d\n", arr[i]);//当i等于10的时候,越界访问了
	}
	return 0;
}

数组作为函数参数的两种传法

1:void wer(char Arr[])     直接传整个数组

2:void wer(char * Arr)       用指针

标签:初始化,arr,int,Arr,C语言,++,数组
From: https://blog.csdn.net/Dovis5884/article/details/144070730

相关文章

  • C语言实例之9斐波那契数列实现
    1.斐波那契数列简介斐波那契数列(Fibonaccisequence),又称黄金分割数列,因数学家莱昂纳多・斐波那契(LeonardoFibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。它的特点是从第三项开始,每一项都等于前两项之和,数列的前两项通常定义为0和1(也有从1和1开始的定义......
  • C语言实例之10求0-200内的素数
    1.素数素数(Primenumber),也叫质数,是指在大于1的自然数中,除了1和它自身外,不能被其他自然数整除的数。例如2、3、5、7、11等都是素数,而4能被2整除、6能被2和3整除,所以它们不是素数。2.素数的特性与判断思路素数是指在大于1的自然数中,除了1和它自身外,不......
  • C语言——数组逐元素操作练习
            定义一个能容纳10个元素的整形数组a,从键盘读取9个整数存放到前9个数组元素中。一.        从键盘读取一个整数n和位置p(0<=p<=8),插入n到数组a中,插入位置:下标p。要求插入点及后续的数组元素都要后移动。    代码如下:intmain(){ intarr......
  • C语言函数递归经典题型——汉诺塔问题
    一.汉诺塔问题介绍        Hanoi(汉诺)塔问题。古代有一个梵塔,塔内有3个座A、B、C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚想把这64个盘子从A座移到C座,但规定每次只允许移动一个盘,且在移动过程中在3个座上都始终保持大盘在下,小盘在上。在移动过程......
  • 用java实现栈和队列(以数组为底层)
    1.实现栈publicclassStackDemo{privateint[]arr;privateinti=-1;publicStackDemo(intsize){arr=newin[size];}//入栈publicvoidadd(intvalue){if(i==arr.length-1){Syste......
  • C语言(七)----指针(下)
    深入理解指针(4)字符指针变量#include<stdio.h>intmain(){ charch='h'; char*pch=&ch; printf("%c\n",*pch); *pch='g'; printf("%c\n",*pch); return0;}//结果为://h//g//也可以:#include<stdio.h>int......
  • 算法练习:34. 在排序数组中查找元素的第一个和最后一个位置
    题目链接:34.在排序数组中查找元素的第一个和最后一个位置。在这里我们可以用暴力的解法:就是一次判断,第一次遇见的元素==target,和最后一次遇见的,就保存起来但是这样暴力解法时间复杂度为O(N)。时间复杂度超出了题目意思。优化解法:因为数组是有序的,我们可以根据二分查找思想......
  • 学习分享-队列-1(数据结构C语言)
    本章写的是基于链表的队列,通过链表来实现队列的操作一个基于链表的队列(Queue)数据结构,先进先出结构体定义typedefstructNode{intdata;structNode*next;structNode*pre;}Node;定义一个节点(Node)结构体,包含数据(data)、指向下一个节点的指针(next)和指向......
  • C语言学习笔记(持续更新)
    C语言计算机的组成(预备知识)计算机组成计算机:能进行计算和逻辑的设备硬件:组成计算机的各种物理部件(鼠标,键盘)【硬件=电子设备+单片机编程+集成电路+嵌入式系统】软件:计算机中运行的程序和数据【软件=系统软件+应用软件+编程语言+算法和数据结构】计算机的六大部件中......
  • C语言(数据,运算符)
    C语言学习笔记2——数据,运算符变量概念在程序执行过程中其中的值可以被改变的量变量代表内存中具有特定属性的一个存储单元,他是用来存储数据的,也就是存变量的值变量应有个名字,以便于通过名字访问变量举例:#include<stdio.h>intmain(){ //①声明变量并初始化 i......