结构体指针和地址的问题

Sniper167 2006-08-08 02:36:17
我想打印出传进来的结构体的首地址,这样用为什么不能通过编译?
请问应该怎么用?

static void *cramfs_read(struct super_block *sb, unsigned int offset, unsigned int len)
{
printk(KERN_INFO "******sb Addr = 0x%x\n", sb);
......
}
...全文
317 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sniper167 2006-08-08
  • 打赏
  • 举报
回复
谢了 楼上诸位
bo.cui 2006-08-08
  • 打赏
  • 举报
回复
不过只是逻辑地址而已(我想你要物理地址也没什么用~要是用物理地址的话,的加上段地址)~(不知道是不是这原理~  忘记了!   操作系统书上有~)
bo.cui 2006-08-08
  • 打赏
  • 举报
回复

逻辑地址????

void dayin(struct aa *p);

struct aa
{
int a;
};

int main(void)
{
struct aa cx,*p=&cx;
dayin(&cx);
printf("%u\n",p);
getch();
}

void dayin(struct aa *p)
{
printf("%u\n",p);//由于win32下指针是4个大小,dev下int也是4个,通用了
}

编译器:devc++   环境:winxp
Sniper167 2006-08-08
  • 打赏
  • 举报
回复
他那个是char型的嘛
char型的我这也可以那样用

我这个是struct啊,就是通不过编译
我要这个结构体指针指向的地址有用
我要把他打印出来

哪位指点
huashow 2006-08-08
  • 打赏
  • 举报
回复
给你一个另一个例子


请教一个printk的问题
zhangjiakouzf 2006-1-6 02:25

请教一个printk的问题

今天看ldd2看到printk中的格式字符串中有一个是%p,不知道是什么意思,请教大家了!

ssize_t faulty_read (struct file *filp, char *buf, size_t count, loff_t *pos)
{
int ret, ret2;
char stack_buf[4];

printk(KERN_DEBUG "read: buf %p, count %li\n", buf, (long)count);
/* the next line oopses with 2.0, but not with 2.2 and later */
ret = copy_to_user(buf, faulty_buf, count);
if (!ret) return count; /* we survived */

printk(KERN_DEBUG "didn't fail: retry\n");
/* For 2.2 and 2.4, let's try a buffer overflow */
sprintf(stack_buf, "1234567\n");
if (count > 8) count = 8; /* copy 8 bytes to the user */
ret2 = copy_to_user(buf, stack_buf, count);
if (!ret2) return count;
return ret2;
}

mq110 2006-1-6 02:27

输出 相应变量的地址.

zhangjiakouzf 2006-1-6 02:33

谢谢楼上,是不是相当于printk("%d",&buf);

mq110 2006-1-6 02:39

引用
原帖由 zhangjiakouzf 于 2006-1-6 10:33 发表
谢谢楼上,是不是相当于printk("%d",&buf);


如果你注意了 /var/log/messages 里的信息 或者是终端输出的信息.就会发现它是16进制的.

printk只是Linux内核的printf的实现.(不支持float) 你可以man printf.

Sniper167 2006-08-08
  • 打赏
  • 举报
回复
怎么解决这个问题呢?
huashow 2006-08-08
  • 打赏
  • 举报
回复
输出 相应变量的地址.
lj860603 2006-08-08
  • 打赏
  • 举报
回复
打印地址可以用%p
Sniper167 2006-08-08
  • 打赏
  • 举报
回复
linux 内核里面的

就是用printk

请问printf("%p", sb); %p 是啥意思哦?
lj860603 2006-08-08
  • 打赏
  • 举报
回复
难道是这里:printk //-->printf ??? ^_^
lj860603 2006-08-08
  • 打赏
  • 举报
回复
就是这样:printf("%p", sb);

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧