簡體   English   中英

關於c點,無法理解輸出

[英]about c point, can‘t understand the output

#include<stdio.h>

typedef unsigned char * char_point;

char_point int_cp(int i)
{  
    printf("i: %d\n", i);
    printf("&i: %p\n", &i);
    printf("(c_p)&i: %p\n", (char_point) &i);
    char_point cp = (char_point) &i;
    return cp;
}


char_point float_cp(float f)
{
    printf("f: %f\n", f);
    printf("&f: %p\n", &f);
    printf("(c_p)&f: %p\n", (char_point) &f);
    char_point cp = (char_point) &f;
    return cp;
}

void endian(char_point cp, int size)
{
    for (int i=0; i<size; i++)
    {
        printf("0x%x\n", cp[i]);
    }

}

int main()
{
    int i = 0x21893678;
    float f = 913.45678f;   

    endian(int_cp(i), sizeof(i));
    // endian((char_point) &i, sizeof(i));      except like this
    printf("== == == ===  =   ==== === = == = == \n");
    // endian((char_point) &f, sizeof(f));
    endian(float_cp(f), sizeof(f));
}

結果:

C點輸出結果

i: 562640504
&i: 0x7ffdddb42fac
(c_p)&i: 0x7ffdddb42fac
0xfd
0x7f
0x0
0x0
== == == ===  =   ==== === = == = == 
f: 913.456787
&f: 0x7ffdddb42fac
(c_p)&f: 0x7ffdddb42fac
0xfd
0x7f
0x0
0x0

例外:

C點輸出異常

這將返回一個指向本地i的指針:

char_point cp = (char_point) &i;

以及指向本地f的指針:

char_point cp = (char_point) &f;

函數返回后,它們將被釋放

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM