第一段代码
#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表进行输出
- 演示
- 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个变量。
输出效果
- 根据十六进制进行计算,得到int数据类型内存大小为4字节
- 且数组内的内存是递进关系