赋值使得整数指针没有强制转换和其他问题

Ind*_*igo 7 c pointers casting

我几天前刚刚开始学习C,而且我在使用指针时遇到了一些困难.我正在尝试将字符串转换为整数数组.下面的小snipet似乎正在工作,但我收到一个警告:

在函数'charToInt32'警告:赋值从整数生成指针而没有强制转换[默认启用] | || ===构建完成:0个错误,1个警告(0分钟,0秒)=== |

警告来自线路

int32result[pos] = returnedInteger;
Run Code Online (Sandbox Code Playgroud)

所以我试图了解什么是最好的解决方案.我应该使用strncpy(但是我可以使用strncpy作为整数吗?)或其他什么,或者我只是完全误解了指针?

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>


    int charToInt32(char * clearText, unsigned int * int32result[])
    {
        int i = 0, j = 0, pos = 0;          /* Counters */
        int dec[4] = {24, 16, 8, 0};        /* Byte positions in an array*/
        unsigned int returnedInteger = 0;           /*   so we can change the order*/ 

        for (i=0; clearText[i]; i+=4) {
            returnedInteger = 0;
            for (j=0; j <= 3 ; j++) {
                returnedInteger |= (unsigned int) (clearText[i+j] << dec[j]) ;
            }

            int32result[pos] = returnedInteger;
            pos++;
        }
        return pos;
    }



    int main()
    {
        int i = 0;
        unsigned int * int32result[1024] = {0};
        char * clearText =  "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

        printf(">>Clear: %s\n", clearText);
        charToInt32(clearText, int32result); // Do the conversion to int32.
        printf(">>Int32 converted: ");
        for (i=0; int32result[i]; i++)
            printf("%u ", (unsigned int) int32result[i]);
        printf("\n");
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

此外,在程序结束时,我有以下行:

printf("%u ", (unsigned int) int32result[i])
Run Code Online (Sandbox Code Playgroud)

将int32result [i]强制转换为unsigned int是否是避免使用%u作为unsigned int*的另一个警告的唯一解决方案?

我确实检查了另一个"赋值使得指针没有投射的整数"主题/问题,但我无法从他们那里得到最终答案.

谢谢您的帮助.

sim*_*onc 8

unsigned int * int32result[1024]
Run Code Online (Sandbox Code Playgroud)

声明一个1024个unsigned int 指针的数组.我想你想在这里使用一系列的int

unsigned int int32result[1024]
Run Code Online (Sandbox Code Playgroud)

charToInt32unsigned int * int32result[]参数指定数组数组的位置存在类似问题unsigned int.你有一个数组,所以可以通过unsigned int * int32result(即删除[]).

您的其余代码应该正常工作.电话就像

charToInt32(clearText, int32result);
Run Code Online (Sandbox Code Playgroud)

相当于

charToInt32(clearText, &int32result[0]);
Run Code Online (Sandbox Code Playgroud)