本文的编译环境使用的是集成开发环境:Visual Studio 2019
Visual Studio 2019官网链接如下
Visual Studio 2019集成的开发环境的特点有
在C语言数组(一)的教程中,简单的介绍了如下的几点
C语言数组(一)的文章链接如下所示
在C语言数组(二)的教程中,简单的介绍了如下的几点
C语言数组(二)的文章链接如下所示

例如:
double values[5] = { 1.5, 2.5,3.5, 4.5, 5.5 };
因此如果编写
double values1[5] = { 1.5, 2.5, 3.5 };
只需要给一个元素提供0:
double values2[5] = { 0.0 };
在指定一列初始值时, 不必提供数组的大小,编译器可以从该列值中推断出元素的个数。
int primes[] = { 2, 3,5, 7,11, 13, 17, 19,23, 291 };
下面声明了一个包含4个元素的数组:
long number[4];
如下所示是数组变量保存在内存中的情形。
数组在内存中 的组织方式

printf("数组value的地址是%p\n", &values);
printf("\n数组number的第三个元素的地址是%p%p\n\n", &number[2]);
int data[5];
for (unsigned int i=0;i<5; ++i)
data[i] = 12*(i + 1);
printf ("data[&d] Address: 易p Contents: d\n", i, &data[i], data[i]) ;
上面的程序调试结果输出如下

数组value的地址是00CFF814
数组number的第三个元素的地址是00CFF77400491023
数组data[0] 的地址是: 00CFF750, 数组data[0]的数据是: 12
数组data[1] 的地址是: 00CFF754, 数组data[1]的数据是: 24
数组data[2] 的地址是: 00CFF758, 数组data[2]的数据是: 36
数组data[3] 的地址是: 00CFF75C, 数组data[3]的数据是: 48
数组data[4] 的地址是: 00CFF760, 数组data[4]的数据是: 60
请按任意键继续. . .
如下:
// 输出字节数
printf("long类型变量的大小为%zu 字节。\n", sizeof(long));
sizeof运算符后类型名称外的括号是必需的。
如果漏了它,代码就不会编译。
也可以对变量应用sizeof运算符,它会计算出该变量所占的字节数。
sizeof运算符生成size_ t类型的值,该类型取决于实现代码,一般是无符号的整数类型。
如果给输出使用
%u
double values[5] = ( 1.5, 2.5,3.5,4.5, 5.5 };
可以用下面的语句输出这个数组所占的字节数:
// 输出数组字节数
printf("\n数组values的大小为%zu 字节。\n", sizeof(values));
调试结果输出如下

数组value的地址是00B3F7B0
数组number的第三个元素的地址是00B3F71000631023
数组data[0] 的地址是: 00B3F6EC, 数组data[0]的数据是: 12
数组data[1] 的地址是: 00B3F6F0, 数组data[1]的数据是: 24
数组data[2] 的地址是: 00B3F6F4, 数组data[2]的数据是: 36
数组data[3] 的地址是: 00B3F6F8, 数组data[3]的数据是: 48
数组data[4] 的地址是: 00B3F6FC, 数组data[4]的数据是: 60
long类型变量的大小为4 字节。
数组values的大小为40 字节。
请按任意键继续. . .
sizeof values[0] size_t element_count = sizeof values / sizeof values[0];
如下所示
size_t elementCount = sizeof values / sizeof(double);
前面的例子可以编写为如下所示
double values[5] = { 1.5, 2.5,3.5, 4.5, 5.5 };
size_t element_count = sizeof values / sizeof values[0];
printf("\n数组values的大小为%zu 字节。\n", sizeof(values));
printf("数组values有 %u 元素, 数组每个元素的字节数是%zu\n", element_count, sizeof(values[0]));
这些语句的输出如下

数组value的地址是00EFFC1C
数组number的第三个元素的地址是00EFFB7C00491023
数组data[0] 的地址是: 00EFFB58, 数组data[0]的数据是: 12
数组data[1] 的地址是: 00EFFB5C, 数组data[1]的数据是: 24
数组data[2] 的地址是: 00EFFB60, 数组data[2]的数据是: 36
数组data[3] 的地址是: 00EFFB64, 数组data[3]的数据是: 48
数组data[4] 的地址是: 00EFFB68, 数组data[4]的数据是: 60
long类型变量的大小为4 字节。
数组values的大小为40 字节。
数组values的大小为40 字节。
数组values有 5 元素, 数组每个元素的字节数是8
请按任意键继续. . .
在使用循环处理数组中的所有元素时,可以使用sizeof 运算符。
例如:
doub1e values[5] = { 1.5, 2.5, 3.5, 4.5, 5.5 };
double sum = 0.0;
for (int i = 0; i < sizeof(values) / sizeof(values[0]); i++)
{
sum += values[i];
}
printf("\n数组values中的这些值的和为 %.2f\n\n", sum);
这些语句的调试结果输出如下

数组value的地址是00D3FE0C
数组number的第三个元素的地址是00D3FD6C00211023
数组data[0] 的地址是: 00D3FD48, 数组data[0]的数据是: 12
数组data[1] 的地址是: 00D3FD4C, 数组data[1]的数据是: 24
数组data[2] 的地址是: 00D3FD50, 数组data[2]的数据是: 36
数组data[3] 的地址是: 00D3FD54, 数组data[3]的数据是: 48
数组data[4] 的地址是: 00D3FD58, 数组data[4]的数据是: 60
long类型变量的大小为4 字节。
数组values的大小为40 字节。
数组values的大小为40 字节。
数组values有 5 元素, 数组每个元素的字节数是8
数组values中的这些值的和为 17.50
请按任意键继续. . .
本文的完整程序如下所示
#pragma once
#include
#include
#define _CRT_SECURE_NO_WARNINGS
#include "Main.h"
int main()
{
system("color 3E");
// 定义数组
double values[5] = { 1.5, 2.5,3.5, 4.5, 5.5 };
double values1[5] = { 1.5, 2.5, 3.5 };
double values2[5] = { 0.0 };
int primes[] = { 2, 3,5, 7,11, 13, 17, 19,23, 291 };
long number[4];
int data[5];
double sum = 0;
// 数组数组的地址
printf("数组value的地址是%p\n", &values);
printf("\n数组number的第三个元素的地址是%p%p\n\n", &number[2]);
for (unsigned int i = 0; i < 5; ++i)
{
data[i] = 12 * (i + 1);
printf("数组data[%d] 的地址是: %p, 数组data[%d]的数据是: %d\n", i, &data[i], i, data[i]);
}
printf("\n");
// 输出字节数
printf("long类型变量的大小为%zu 字节。\n", sizeof(long));
// 输出数组字节数
printf("\n数组values的大小为%zu 字节。\n", sizeof(values));
size_t element_count = sizeof values / sizeof values[0];
size_t elementCount = sizeof values / sizeof(double);
/*double values[5] = { 1.5, 2.5,3.5, 4.5, 5.5 };
size_t element_count = sizeof values / sizeof values[0];*/
printf("\n数组values的大小为%zu 字节。\n", sizeof(values));
printf("数组values有 %u 元素, 数组每个元素的字节数是%zu\n", element_count, sizeof(values[0]));
for (int i = 0; i < sizeof(values) / sizeof(values[0]); i++)
{
sum += values[i];
}
printf("\n数组values中的这些值的和为 %.2f\n\n", sum);
system("pause");
return 0;
}
本文主要介绍了C语言高级编程的数组的初始化的几种方法。
介绍了数组和地址之间的关系。
介绍了怎么样确定数组的大小。
介绍了sizeof怎么样确定数组大小。
通过实例程序来掌握C语言数组与地址的应用。

本文到这里就结束啦。
希望本文的C语言数组的初始化、数组和地址、确定数组的大小教程。
能对你有所帮助。