c - 当 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);
}
但它不打印任何东西。
解决方案
作为参数给出的字符串衰减到其第一个元素的地址,然后将其转换为unsigned int
. 如果该整数足够大以保存地址而不会丢失位,则可以将其转换回:
char* pointer1 = "abcde";
unsigned int integer = pointer1;
char* pointer2 = integer;
if (pointer1 == pointer2) {
printf("Works, kindof.\n");
}
然而,正如其他人在评论中指出的那样,这种方法很糟糕,你不应该用它来解决你遇到的任何问题。相反,首先阅读“XY 问题”的含义,然后再问另一个解决此处实际问题的问题。
推荐阅读
- php - Wordpress 在自定义页面上更改 URL 参数
- python - PyQt5可移动按钮导致屏幕拖影
- python - 如何处理将作为另一个包的依赖项的命名空间包
- sql-server - 需要帮助查找 SSIS 教程的文件
- javascript - javascript中的基本和基本矩阵
- visual-studio - 当我使用EF Code First时,是否可以在vstudio中看到数据模型图?
- go - DEX LDAP 连接器令牌签名
- c# - Ext.NET 部分视图未显示
- linux - 如何在linux shell中将子字符串与特殊字符匹配?
- python - difflib 序列匹配器缺少公共子字符串