鍍金池/ 問答/C/ c 語言使用強(qiáng)制類型轉(zhuǎn)換提示訪問沖突是什么原因??

c 語言使用強(qiáng)制類型轉(zhuǎn)換提示訪問沖突是什么原因??

有下面一段代碼:

void say(char name[100] , char sex[100] , short age) {
    char str[1000] = "my name is ";
    
    strcat_s(str , sizeof str , name);
    strcat_s(str, sizeof str, ", i am a ");
    strcat_s(str , sizeof str , sex);
    strcat_s(str, sizeof str, " , this year i am ");

    // const char * 與 int 的間接級別不同
    // 我要如何把 int 轉(zhuǎn)換成 const char * 類型的數(shù)據(jù)??
    strcat_s(str , sizeof str , age);
    strcat_s(str , sizeof str , "old!");

    printf("定義的字符串:%s\n" , str);
}

int main(void) {
    // 定義結(jié)構(gòu)體
    struct Person {
        char *name;
        char *sex;
        short age;
    };

    // 聲明結(jié)構(gòu)體類型變量
    struct Person p1, p2;

    // 結(jié)構(gòu)體變量賦值
    p1.name = "grayVTouch";
    p1.sex = "male";
    p1.age = 22;

    // 輸出結(jié)構(gòu)體信息
    say(p1.name , p1.sex , p1.age);

    // 結(jié)構(gòu)體數(shù)組
    system("pause");

    return 0;
}

其中 say 函數(shù):

void say(char name[100] , char sex[100] , short age) { ... }

say() 函數(shù)調(diào)用

p1.name = "grayVTouch"; // char *
p1.sex = "male"; // char *
p1.age = 22; // short

// 調(diào)用
say(p1.name , p1.sex , p1.age)

然后在 say 函數(shù)內(nèi)部執(zhí)行 strcat_s(str , sizeof str , age) 的時候警告:const char *short 的間接級別不同,該如何進(jìn)行類型轉(zhuǎn)換??我使用 strcat_s(str , sizeof str , (const char *) age) 進(jìn)行強(qiáng)制類型轉(zhuǎn)換報錯:訪問沖突

我該如何正確進(jìn)行類型轉(zhuǎn)換? 或 合理的做法是??

回答
編輯回答
款爺

你的 ageshort 類型,無論如何都不能轉(zhuǎn)成 char* 的,不知你的目的是什么。

2018年7月17日 05:11