首页 > 解决方案 > 当 C 中预期无符号 int 时将字符串传递给函数

问题描述

我主要调用这个函数:

expects_unsigned_int("some text");

定义如下:

expects_unsigned_int(unsigned int val)

我想打印函数内部传递的字符串。是否可以按照expects_unsigned_int()定义的方式进行?

这是我尝试过的:

expects_unsigned_int(unsigned int val) {
    unsigned int* string = 0;
    string = (unsigned int*) val;
    printf("%s", (char*)string);
}

但它不打印任何东西。

标签: cstringunsigned-integer

解决方案


作为参数给出的字符串衰减到其第一个元素的地址,然后将其转换为unsigned int. 如果该整数足够大以保存地址而不会丢失位,则可以将其转换回:

char* pointer1 = "abcde";
unsigned int integer = pointer1;
char* pointer2 = integer;
if (pointer1 == pointer2) {
    printf("Works, kindof.\n");
}

然而,正如其他人在评论中指出的那样,这种方法很糟糕,你不应该用它来解决你遇到的任何问题。相反,首先阅读“XY 问题”的含义,然后再问另一个解决此处实际问题的问题。


推荐阅读