我理解无符号整型和无符号整型的区别。但我的问题有点不同。
我正在对一个特定的内存进行ioremaping(linux)映射,并且我想读取这个内存。我做了以下事情:
func()
{
unsigned int *p;
p = (unsigned int *)ioremap(ADDR,8*sizeof(unsigned int));
for (i = 0; i <= 7; i++)
pr_err("p[%d] = %d", i, p[i]);
}这个可以完美地工作。但是我看到一个标准代码也在做同样的事情,并且使用(unsidned *)而不是(unsigned int *)。也就是说p是unsigned *p的。
func()
{
unsigned *p;
p = (unsigned *)ioremap(ADDR,8*sizeof(unsigned));
for (i = 0; i <= 7; i++)
pr_err("p[%d] = %d", i, p[i]);
}我想知道这是否是一个好的编程实践(平台无关的代码??)。如果是,请说明原因。
发布于 2013-10-30 10:26:44
unsigned和unsigned int完全没有区别。
因此,unsigned *和unsigned int *完全没有区别。
同样,long是long int的缩写,int是signed int的缩写,等等。唯一需要注意的例外是,普通char是有符号的还是无符号的是由实现定义的,因此它与signed char不同。
发布于 2013-10-30 10:26:52
unsigned和unsigned int是同一类型,指向它们的指针也是相同的类型。int是隐式的。
https://stackoverflow.com/questions/19672716
复制相似问题