首页 > 解决方案 > 尽管我正在尝试更改数据类型,是否可以运行此代码?

问题描述

我可以不调试就运行吗?代码将无法编译,因为我试图将 char 转换为 int,反之亦然。我只是在寻找一种解决方案,可以让我的 char 变成 int 等等。

#include "stdafx.h"
#include <stdio.h>

int main()
{
    int i;
    char char_array[5] = { 'a', 'b', 'c', 'd', 'e' };
    int int_array[5] = { 1, 2, 3, 4, 5 };

    char *char_pointer;
    int *int_pointer;

    char_pointer = int_array;       //The char_pointer and int _pointer
    int_pointer = char_array;       //point to incompatible data types

    for (i = 0; i < 5; i++) {       //Iterate through the int array with the int_pointer
        printf("[integer pointer] points to %p, which contains the char '%c'\n", int_pointer, *int_pointer);
        int_pointer = int_pointer + 1;
    }

    for (i = 0; i < 5; i++) {       //Iterate through the char array with the char_pointer
        printf("[char pointer] points to %p, which contains the integer %d\n", char_pointer, *char_pointer);
        char_pointer = char_pointer + 1;
    }
    getchar();
    return 0;
}

标签: cpointers

解决方案


事实证明我能够对指针的数据类型使用数据类型转换。我将在修订中包含更新的代码。

int main()
{
    int i;

    char char_array[5] = { 'a', 'b', 'c', 'd', 'e' };
    int int_array[5] = { 1, 2, 3, 4, 5 };

    char *char_pointer;
    int *int_pointer;

    char_pointer = (char *) int_array;      //Typecast into the
    int_pointer = (int *) char_array;       //pointer's data type

    for (i = 0; i < 5; i++) {       //Iterate through the int array with the int_pointer
        printf("[integer pointer] points to %p, which contains the char '%c'\n", int_pointer, *int_pointer);
        int_pointer =(int *) ((char *) int_pointer + 1);
    }

    for (i = 0; i < 5; i++) {       //Iterate through the char array with the char_pointer
        printf("[char pointer] points to %p, which contains the integer %d\n", char_pointer, *char_pointer);
        char_pointer = (char *) ((int *)char_pointer + 1);
    }
    getchar();
    return 0;
}

推荐阅读