23.数据类型和sizeof运算符


这里写图片描述


这里写图片描述


这里写图片描述


因格式问题,截图上传。


23.type_convert
/*
 * 公司:XXXX
 * 作者:Rston
 * 博客:http://blog.csdn.net/rston
 * GitHub:https://github.com/rston
 * 项目:数据类型和sizeof运算符
 * 功能:演示变量数据类型的存取方式必须一致。
 */
#include <stdio.h>

int main(int argc, char **argv)
{
    int a = 5;
    printf("a = %d.\n", a);                 // a = 5.   
    printf("a = %f.\n", (float)a);          // a = -0.000000.乱码,按照int类型存,按照float类型取。

    int b = 5;
    int *p1 = &b;
    float *p2 = (float *)&b;
    printf("*p1 = %d.\n", *p1);             // *p1 = 5
    printf("*p2 = %f.\n", *p2);             // *p2 = 0.000000. 变量*p1*P2分别按照int类型和float类型取

    int c = 193;
    int *p3 = &c;
    char *p4 = (char *)&c;
    printf("*p3 = %d.\n", *p3);             // *p3 = 193.
    printf("*p4 = %c.\n", *p4);             // *p4 = ?. 以int型存放的二进制数超出了char型范围,以char型解析时出错。

    int d = 127;
    int *p5 = &d;                           
    char *p6 = (char *)&d;                  
    printf("*p5 = %d.\n", *p5);             // *p5 = 127.           
    printf("*P6 = %d.\n", *p6);             // *P6 = 127.
    printf("*(p6+1) = %d.\n", *(p6+1));     // *(p6+1) = 0.
    printf("*(p6+2) = %d.\n", *(p6+2));     // *(p6+2) = 0.
    printf("*(p6+3) = %d.\n", *(p6+3));     // *(p6+3) = 0.

    return 0 ;
}

23.sizeof
/*
 * 公司:XXXX
 * 作者:Rston
 * 博客:http://blog.csdn.net/rston
 * GitHub:https://github.com/rston
 * 项目:数据类型和sizeof运算符
 * 功能:演示sizeof运算符和数组、指针组合在一起的各种情况。
 */

#include <stdio.h>
#include <string.h>

#define dpChar  char *
typedef char * tpChar;

void func(int str[], int n)
{
    printf("sizeof(str) = %d.\n", sizeof(str));                 // 4
    printf("n = %d.\n", n);                                     // 40
}

int main(int argc, char **argv)
{
    char str1[] = "hello";
    printf("sizeof(str1) = %d.\n", sizeof(str1));               // 6
    printf("sizeof(str1[0]) = %d.\n", sizeof(str1[0]));         // 1
    printf("strlen(str1) = %d.\n", strlen(str1));               // 5

    char *str2 = "hello";
    printf("sizeof(str2) = %d.\n", sizeof(str2));               // 4
    printf("sizeof(*str2) = %d.\n", sizeof(*str2));             // 1
    printf("strlen(str2) = %d.\n", strlen(str2));               // 5

    int a = 10;
    printf("sizeof(a) = %d. sizeof(int) = %d.\n", sizeof(a), sizeof(int));  // sizeof(a) = 4. sizeof(int) = 4.

    double b[10] = {0.0};
    printf("sizeof(b) = %d.\n", sizeof(b));                     // sizeof(b) = 80.

    int str3[10] = {0};
    func(str3, sizeof(str3));

    tpChar p1, p2;                                              // 等价于char *p1, *p2;即char *p1; char *p2;
    dpChar p3, p4;                                              // 等价于char *p3, p4;即char *p3; char p3;
    printf("sizeof(p1) = %d.\n", sizeof(p1));                   // 4
    printf("sizeof(p2) = %d.\n", sizeof(p2));                   // 4
    printf("sizeof(p3) = %d.\n", sizeof(p3));                   // 4
    printf("sizeof(p4) = %d.\n", sizeof(p4));                   // 1

    int c[3] = {1, 2, 3};                                   
    int i = 0;
    for (i=0; i<(sizeof(c)/sizeof(c[0])); i++)                  // 使用sizeof(c)/sizeof(c[0])计算数组中元素个数
    {
        printf("c[%d] = %d.\n", i, c[i]);
    }

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值