在C中类型转换指针的语法

时间:2018-07-26 14:00:06

标签: c

我碰到一个代码段,其中添加了一个修复程序,用于删除编译器警告。

之前:

Function CountColorChanges(rng As Range) As Integer
    Dim i As Integer

    With rng.Columns
        If .Count > 1 Then
            For i = 1 To .Count - 1
                If rng.Cells(1, i + 1).Interior.Color <> rng.Cells(1, i).Interior.Color Then CountColorChanges = CountColorChanges + 1
            Next i
        End If
    End With
End Function

之后:

int test;
SYSTEM_START_Function(0, &test);

具有:

int test;
SYSTEM_START_Function(0, &(char)test);

谁能告诉我这是正确的语法吗?如果是,请说明编译器将如何解释它。

1 个答案:

答案 0 :(得分:1)

由于testint,所以&test是指向int的指针。您正在调用的函数的第二个参数中期望有一个指向char的指针。

用于将一种类型的事物转换为另一种类型的事物的C运算符是强制转换运算符。它的格式为( 类型名称 ) 表达式

指向char的指针的类型名称为char *。要获取test的地址并将其转换为指向char的指针,请编写:

(char *) &test

在C中支持此特定转换,可能要考虑到正在使用的软件引起的各种警告。 (系统函数将任意对象视为字节序列是很正常的。)但是,您应该注意,并非所有的指针转换都是正确的C。在转换为除字符对象指针以外的指针类型之前,您应该学习C关于指针转换的规则。