c - 狡猾的指针表达式 (int*)arr

标签 c

我正在学习 c,我发现第 18 行中的表达式 (int*)arr 很困难。整个程序是

int main () {
    char c, arr['z'-'a'], *pChar;
    int i, *pInt, int matr = 74 ;

    for ( c='a'; c<'z'; c++) {
        arr[c-'a'] = c;
        printf("%c ", arr[c-'a']);
    }
    printf("\n");   

    pChar = arr + matr%15;
    for (i=0; i< 5; i++) {
        printf("%c ", *pChar);
        pChar++;
    }
    printf("\n");

    pInt = (int *)arr + matr%2;
    for (i=0; i<5; i++) {
        pChar = (char *)pInt;
        printf("%c ", *pChar);
                pInt++;
    }
    return 0;
}

谢谢

最佳答案

您将 arr 声明为 char 类型。 数组的名称可以用作指向其第一个元素的指针arr 是指向数组 arr 的第一个 char 的指针,类型为 char *
pInt 的类型为 int *,用于表达式

pInt = (int *)arr + matr%2;

需要进行强制转换才能将程序中的 arr 类型转换为 int * 类型。

关于c - 狡猾的指针表达式 (int*)arr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20032263/

相关文章:

html - 莱克斯堡 : webscraping an HTML table in C

c - C 中数据输入和 malloc 的问题

c++ - 了解 getopt() 示例。 int 与 char 的比较

关键部分示例 - 它有效吗?

c - 我需要编写一个分配更改程序。我完成了代码,但有一些问题。请帮我调试代码

c - 使用静态缓冲区的地址算术

c - 并行 QuickSort C 实现

c - 如何在汇编代码中使用c变量

c - "resettable"带有 C 宏的循环 DSL?

python - 从刷新与未刷新的缓冲区中读取