c语言笔记_1

1:数组和指针

float a[10],*ptr;
a[0] = 10.222;
ptr = &a[0];

printf("%d\n", a);//6422000
printf("%d\n", &a);//6422000
printf("%d\n", &a[0]);//6422000
printf("%d\n",ptr);//6422000

可以看出,声明数组后,a既是数组名,也是0号元素的地址。

所以可以这样访问元素:

printf("%f\n", *a);//10.222000

数组与指针虽然有相通之处,但是却并不能理解为同一个东西。

可以查看a的大小:

printf("%d\n", sizeof(a));//40

一个float是4,10个也就是40,可以看出,指的是数组的大小。

若是一个指针的话,大小应该为系统的位数,一般为8;

同样的,也可以用数组的方式访问指针指向的值:

printf("%f\n", ptr[0]);//10.222000

虽然允许这样做,但一般还是应该照原本的风格使用。

2.两个指针相减,可以得出它们差了多少位:

    float a[10] = {11.1,22.2,33.3,44.4,55.5};
    float *ptr1, *ptr2;
    ptr1 = a;
    ptr2 = a+2;
    int p = ptr2 - ptr1;
    printf("%d\n", p);//2

还可以进行比较,判断出谁前谁后:

    int p;
    if(ptr2 > ptr1)
    {
        p = 111;
    }
    printf("%d\n", p);//111

3.unsigned long类型用%lu输出。

    unsigned long w = 5;
    w += -2;
    w += -6;

无符号型,若给它一个无符号数,可以正常输出。

但如果给它一个负数,则可能输出一个很大的值。

这是因处理类型时的规则所致。

4.取余符号(%)用于整型,这样会报错:

    double x = 1.32;
    int y = x % 3;

把y换成double也不行。

    int x = -23;
    int y = x % 3;//-2

如果x是个负数,那么余数也会以负数的形式输出。

5.结合性例题

    int k,a,b;
    a += a -= (b=4) * (a=3);

这条语句从右往左算,第一步后,a=3,b=4,3x4=12。

6.例题

    int num,sum;
    num=sum=7;
    sum=num++,sum++,++num;//8
    sum=(num++,sum++,++num);//9

加()后用最后一个子表达式的值作为最终值。

7:数据存储形式

在C语言中,不同类型的数据在内存中存储的形式主要是原码、补码或浮点表示法。具体取决于数据类型:

1.char 类型:字符的存储方式可以是原码形式,表示字符的ASCII码值。如果 char 被用作存储数值(特别是在处理有符号 char 时),那么这些数值通常以补码形式存储。

2.整数类型:通常以补码形式存储。

3.浮点类型:浮点数遵循IEEE 754标准,使用一种特殊的格式存储,这包括三个部分:符号位、指数部分和尾数部分。

4.指针类型:指针类型存储内存地址。这些地址通常以原码形式存储,即直接表示地址值的二进制形式。

8.float的细节

float类型的数,加0.5可以实现小数第一位的四舍五入。如果小于5,则不会进位,大于等于5,则加0.5后就进位了。如果是后面的小数,可先乘以对应位数再四舍五入,之后再除回来就可以了。比如,对第三位进行四舍五入,可先乘以100,然后加0.5,最后除100.0就行了。

9.提取整数的各个位上的数:

    int a=4321;
    int a1=(a/10/10/10)%10,
    a2=(a/10/10)%10,
    a3=(a/10)%10,
    a4=a%10;

10:填充

    char *str = "hello";
    printf("%10saaa\n", str);//     helloaaa
    printf("%-10saaa\n", str);//hello     aaa

在输出时,%后面加数字可以指定输出多少个,多余的会以空格填充

不加-,则是向右靠,加-是向左靠。

可以通过*以变量指定长度:

    int num = 123;
    int width = 10;
    printf("%*d\n", width, num);//       123

%08s,可以指定以0填充。

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值