C 知识点(1)

来源:互联网 发布:cad软件手机版 编辑:程序博客网 时间:2024/06/05 20:05

零散的知识归纳,包含了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.1234567686915dvar = 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) = 40sizeof(int) = 4  sizeof(array[0])=4array =0x7fff5fbff790  &array[0] = 0x7fff5fbff790array+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]) = 48sizeof(int[4]) = 16 sizeof(array[0])=16array = 0x7fff5fbff780 &array[0] = 0x7fff5fbff780array+1 = 0x7fff5fbff790 &array[0]+1 = 0x7fff5fbff790

从以上运行结果可以看到,二维数组的组成元素是一维数组,大小是16。和4个int类型的大小一致。同时二维数组的变量名和数组第一个元素的地址相同。