MST

星途 面试题库

面试题:Kotlin Native与C互操作之基础类型转换

在Kotlin Native与C的互操作场景中,如何将Kotlin的基本数据类型(如Int、Double)与C语言中的对应数据类型进行相互转换?请举例说明具体的代码实现。
35.3万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试

在Kotlin Native与C的互操作中,基本数据类型的转换相对直接,以下是Int和Double类型转换的示例:

Int类型转换

  1. Kotlin到C:假设在C语言中有如下函数声明(在example.h文件中):
void printInt(int num);

在Kotlin中调用这个函数并传递Int类型数据:

package com.example

import kotlinx.cinterop.*
import platform.posix.*

external fun printInt(num: Int)

fun main() {
    val kotlinInt = 42
    printInt(kotlinInt)
}

这里Kotlin的Int类型可以直接传递给C函数printInt,因为Kotlin Native会自动处理类型映射,Int在这种情况下与C的int相对应。

  1. C到Kotlin:假设C函数返回一个int类型值(在example.c文件中):
int getInt() {
    return 100;
}

在Kotlin中调用这个函数并接收返回值:

package com.example

import kotlinx.cinterop.*
import platform.posix.*

external fun getInt(): Int

fun main() {
    val result = getInt()
    println("Result from C: $result")
}

同样,Kotlin Native会自动将C的int类型返回值转换为Kotlin的Int类型。

Double类型转换

  1. Kotlin到C:假设C语言中有如下函数声明(在example.h文件中):
void printDouble(double num);

在Kotlin中调用这个函数并传递Double类型数据:

package com.example

import kotlinx.cinterop.*
import platform.posix.*

external fun printDouble(num: Double)

fun main() {
    val kotlinDouble = 3.14
    printDouble(kotlinDouble)
}

Kotlin的Double类型直接对应C的double类型,可以直接传递。

  1. C到Kotlin:假设C函数返回一个double类型值(在example.c文件中):
double getDouble() {
    return 2.71828;
}

在Kotlin中调用这个函数并接收返回值:

package com.example

import kotlinx.cinterop.*
import platform.posix.*

external fun getDouble(): Double

fun main() {
    val result = getDouble()
    println("Result from C: $result")
}

Kotlin Native会将C的double类型返回值自动转换为Kotlin的Double类型。

通过上述方式,可以在Kotlin Native与C的互操作场景中实现基本数据类型(如Int、Double)的相互转换。