零散的知识归纳,包含了double float变量的精确度。putchar函数。数组名的理解。
float 与 double 变量
类型 | 位数 | 有效位数 |
---|---|---|
float | 32 | 6-7 |
double | 64 | 15-16 |
代码如下
#include <stdio.h>
int main()
{
float fvar = 0.1234567654321;
printf("fvar = %.13f\n",fvar);
double dvar = 0.1234567654321;
printf("dvar = %.13f\n",dvar);
return 0;
}
输出结果如下
fvar = 0.1234567686915
dvar = 0.1234567654321
float变量会让后面几位的有效数字丢失。
putchar()
向屏幕输出一个字符。输入参数是一个int
型变量。
#include <stdio.h>
int main()
{
for (int i=0; i<26;i++) {
putchar('a'+i);
putchar('\n');
}
return 0;
}
数组名的深刻含义
一维数组
一维数组名,从总体来看,他是一种构造类型,同时他又承担了,访问每个数组元 素的责任。所以数组名, 就有两重性。
#include <stdio.h>
int main()
{
int array[10];
printf("sizeof(int[10]) = %d sizeof(array) = %d\n",sizeof(int[10]),sizeof(array));
printf("sizeof(int) = %d sizeof(array[0])=%d\n",sizeof(int),sizeof(array[0]));
printf("array =%p &array[0] = %p\n",array,&array[0]);
printf("array+1 = %p &array[0] +1 = %p\n", array+1, &array[0]+1);
return 0;
}
运行结果:
sizeof(int[10]) = 40 sizeof(array) = 40
sizeof(int) = 4 sizeof(array[0])=4
array =0x7fff5fbff790 &array[0] = 0x7fff5fbff790
array+1 = 0x7fff5fbff794 &array[0] +1 = 0x7fff5fbff794
从运行结果可以看出:数组名的大小和它所表示的固定大小的数据类型的大小相同(大小是40)。同时每个数组元素的大小和其基本类型一致(4)。另外数组命的地址和数组元素的首地址相同,兼具访问数据的功能。
二维数组
数组名,是数组的唯一标识符。二维数组也是如此,二维数组本质是一嵌套关系, 其本质是一种一维数组,每个一维数组成员又是一个一维数组。
#include <stdio.h>
int main()
{
int array[3][4];
printf("sizeof(array) = %d sizeof(int[3][4]) = %d\n",sizeof(array),sizeof(int[3][4]));
printf("sizeof(int[4]) = %d sizeof(array[0])=%d\n",sizeof(int[4]),sizeof(array[0]));
printf("array = %p &array[0] = %p\n",array,&array[0]);
printf("array+1 = %p &array[0]+1 = %p\n",array+1,&array[0]+1);
return 0;
}
运行结果:
sizeof(array) = 48 sizeof(int[3][4]) = 48
sizeof(int[4]) = 16 sizeof(array[0])=16
array = 0x7fff5fbff780 &array[0] = 0x7fff5fbff780
array+1 = 0x7fff5fbff790 &array[0]+1 = 0x7fff5fbff790
从以上运行结果可以看到,二维数组的组成元素是一维数组,大小是16。和4个int类型的大小一致。同时二维数组的变量名和数组第一个元素的地址相同。