c 语言使用强制类型转换提示访问冲突是什么原因??

有下面一段代码:

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 转换成 const char * 类型的数据??
    strcat_s(str , sizeof str , age);
    strcat_s(str , sizeof str , "old!");

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

int main(void) {
    // 定义结构体
    struct Person {
        char *name;
        char *sex;
        short age;
    };

    // 声明结构体类型变量
    struct Person p1, p2;

    // 结构体变量赋值
    p1.name = "grayVTouch";
    p1.sex = "male";
    p1.age = 22;

    // 输出结构体信息
    say(p1.name , p1.sex , p1.age);

    // 结构体数组
    system("pause");

    return 0;
}

其中 say 函数:

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

say() 函数调用

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

// 调用
say(p1.name , p1.sex , p1.age)

然后在 say 函数内部执行 strcat_s(str , sizeof str , age) 的时候警告:const char *short 的间接级别不同,该如何进行类型转换??我使用 strcat_s(str , sizeof str , (const char *) age) 进行强制类型转换报错:访问冲突

我该如何正确进行类型转换? 或 合理的做法是??

阅读 2k
1 个回答

你的 ageshort 类型,无论如何都不能转成 char* 的,不知你的目的是什么。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进