C 知识点(1)

零散的知识归纳,包含了double float变量的精确度。putchar函数。数组名的理解。

float 与 double 变量

类型位数有效位数
float326-7
double6415-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类型的大小一致。同时二维数组的变量名和数组第一个元素的地址相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值