首页 > 其他分享 >C关于一维数组以及二维数组的创建和简单利用(上)

C关于一维数组以及二维数组的创建和简单利用(上)

时间:2023-08-05 19:01:02浏览次数:42  
标签:输出 数组 字符 int 二维 一维 sizeof 变量

第一段代码

#include <stdio.h>
#include <String.h>

int main ()

{

    int a[]={1,2,3,4,5,6,7,8,9,10};
    int b=sizeof(a)/sizeof(a[0]);
    int c=0;
    for(c=0;c<b;c+=1)
    {
        printf("&a[%d]=%p\n",c,&a[c]);
    }


    return 0;
}
  • 从主函数之后开始,用了int这个整形数据类型来定义了一个变量a,并且以加入了“[]”符号。
  • 根据C语言语法,“[]"符号内可以加入一个整形常量来表示创建多少个a变量。但是也可以使用“{}”符号,在其中添加整形并且以“,”隔开来创建。其中多少个整形数就是多少个变量。
  • 当然“{}”也可以用于添加字符,但每个字符不仅要间隔一个逗号,还一定要以“‘’”(单引号)将每一个字符圈起来,不然编译器会报错。使用如此形式可以添加字符到变量并且以字符多少决定变量的多少:“abcd"。这种方法不需要单引号和逗号。这样一次性创建多个相同名称的变量,就被叫做数组。
  • 注意在输出数组时,和输出一个变量时。%d可以输出整形,%c可以输出字符。但是若输出时不对应,则会输出按ASCII表进行输出

C关于一维数组以及二维数组的创建和简单利用(上)_#strlen

  • 演示

C关于一维数组以及二维数组的创建和简单利用(上)_#sizeof_02

C关于一维数组以及二维数组的创建和简单利用(上)_#sizeof_03

  • ASCII表中的图型即为C语言中的字符

关于sizeof和strlen的用法

  • sizeof是关键字也是一个运算符,它可以计算多种数据类型的总内存的大小,如int,char,float和double
  • strlen是函数,它的使用需要调用头文件”String.h“才能使用。strlen只能检索字符串中字符元素数量,在识别的中遇到\0时才会停下。
  • 那如何计算出其他数据类型中数组的元素个数呢?使用"sizeof(a)/sizeof(a[0])"就行了,该段意为a数组的内存总大小除以a数组第一个元素的内存大小。由于a数组内所有元素内存都是一样的,依据逻辑:总大小除以每一个部分的大小等于总数。

输出元素的内存地址

  • 在printf()函数中,%p意为输出该变量或常量的内存地址,但需要检索。
  • 故在变量前面加上&,就能将变量与%p相配合,输出内存地址。
  • 数组a[c]意为,数组内第c个变量。

输出效果

C关于一维数组以及二维数组的创建和简单利用(上)_#sizeof_04

  • 根据十六进制进行计算,得到int数据类型内存大小为4字节
  • 且数组内的内存是递进关系

标签:输出,数组,字符,int,二维,一维,sizeof,变量
From: https://blog.51cto.com/u_16212408/6977457

相关文章

  • 王道408用数组,链表以及双向链表实现栈、队列
    我在电脑上敲了一遍,又在纸上模拟了一遍下面记录在电脑上敲的:一、用数组实现栈#include<stdio.h>#include<string.h>#defineMaxSize50typedefstruct{intdata[MaxSize];inttop;}stack;voidInitStack(stack&S){S.top=-1;S.data[0]=5;......
  • JS数组有哪些常用原生方法?哪些能改变数组本身?
    1.数组和字符串的转换方法toString不改变原数组constarr=[1,2,3]console.log(arr.toString());//1,2,3join不改变原数组join(str)数组转字符串,接收一个参数,默认为逗号分隔符。constarr=[1,2,3]console.log(arr)//[1,2,3]console.log(ar......
  • 二维数组花式遍历(旋转,螺旋) [labuladong-刷题打卡 day5]
    矩阵旋转48.旋转图像难点主要在于:用翻转和镜像处理逆反和旋转,和逆转单词一样“难者不会,会者不难”,思路简单镜像的坐标对应关系处理语言特性的利用,不同语言有不同api,实际代码中会有很大不同,但思想一致如果确定矩阵维数,通过线性代数应该可以直接计算答案...classSolution......
  • 将数组初始化为0并且逆置
    voidinit(int*arr,intsz){ inti=0; for(i=0;i<sz;i++) { arr[i]=0; }}voidprint(intarr[],intsz){ inti=0; for(i=0;i<sz;i++) { printf("%d",arr[i]); } printf("\n");}voidreverse(intarr[],intsz){ intleft=......
  • 5445.子数组和排序后的区间和
          1intcmp(constvoid*a,constvoid*b)2{3return*(int*)a-*(int*)b;4}5intrangeSum(int*nums,intnumsSize,intn,intleft,intright){6if(n<=0)returnNULL;7intm=numsSize*(numsSize+1)/2,i,j,k;8intn......
  • C语言-计蒜客-斐波那契数列(非数组)
    小蒜蒜最近学习了斐波那契数列。斐波那契数列是指这样的数列:数列的第一个和第二个数都为1、1,接下来每个数都等于前面2个数之和。给出一个正整数k,要求斐波那契数列中第k个数是多少。输入格式输入一行,包含一个正整数k。(1≤k≤46)输出格式输出一行,包含一个正整数,表示斐波那......
  • 在线直播系统源码,js循环数组的方法合集
    在线直播系统源码,js循环数组的方法合集一、forEach循环注:没有return返回值,且不能用break跳出循环。 letarrlist=['123','456','789'];arrlist.forEach(function(value,index){  //value是每一项,index是索引  console.log(value,index);}); ​二、for循环......
  • 将中文汉字转为字节数组
     ///<summary>       ///将中文汉字转为字节数组       ///</summary>       ///<paramname="chineseStr"></param>       ///<returns></returns>       publicstaticbyte[]parseChineseToByte(stringchineseStr)......
  • Java中如何向一个string类型的数组中添加数据
    在Java中,String类型的数组是固定长度的,一旦创建后就无法改变其长度。如果你需要向一个String类型的数组中添加数据,可以考虑使用ArrayList或LinkedList等可变长度的集合类型来代替。使用 ArrayList,你可以通过调用add()方法来向集合中添加元素,例如://创建一个ArrayList......
  • 关于 array 和 &array (数组名与数组地址)
     对于数组a:在绝大多数情况下,a等价于&a[0],即数组名等于数组首元素地址(等同于数组首地址)只有两种情况例外:1. 对数组名取地址(&a),此时虽然数值上等于a,但表示含义不同,a表示首元素地址,&a表示整个数组的首地址,    因此a+1≠&a+1,具体见前篇;2. 使用sizeof时,sizeof......