| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1927 人关注过本帖
标题:C指针
只看楼主 加入收藏
yole
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2008-7-10
收藏
 问题点数:0 回复次数:8 
C指针
关于指针类型转换
#include<stdio.h>
int main(void)
{
    int n=2;
    char a='e';
    void * ptr;     
    ptr=&a;
    printf("%c",*(int*)ptr);    
}

这是书上的,说得是类型转换。

{
    int n=2;
    char a='e';
    int * ptr;          /*改了*/
    ptr=&n;
    printf("%d",ptr);        /*有改动*/
}
这么改能运行,但结果为什么是X
搜索更多相关主题的帖子: 指针 
2008-07-19 23:55
独孤小梦
Rank: 1
等 级:新手上路
威 望:1
帖 子:338
专家分:0
注 册:2008-6-5
收藏
得分:0 
#include <stdio.h>
void main()
{
    int n=2;
    char a='e';
    int *ptr;   
    ptr=&n;
    printf("%d",*ptr);
}
你最后少了*号!这里加个*号看看怎么样!

编程小菜
2008-07-20 00:00
chinahelloworld
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-7-20
收藏
得分:0 
哎,你那书上的例子难道没问题吗?
printf("%c",*(int*)ptr); 既然是打印字符,并且ptr是指向char型的数据,为什么要把它强制转换成int*型,哪个白痴写的教材。鬼才知道这样写的程序有没有隐藏的错误。
建议楼主立即把你的教科书卖废纸(遗害无穷),然后买C和指针,The C programming language,C专家编程,C陷阱与缺陷。这几本书加起来总共也才一百多块大洋,但可以让你有坚实的C基础,如果看通了这几本书,一般的C程序员基础肯定没你好,面试一些公司的题目也不成问题。当然,你还需要多读读别人写的程序,特别是linux里面的代码,功到自然成。
2008-07-20 16:33
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
收藏
得分:0 
pDosHeader = (PIMAGE_DOS_HEADER)hMod;
pNTHeaders = (PIMAGE_NT_HEADERS)((BYTE *)hMod + pDosHeader->e_lfanew);
pOptHeader = (PIMAGE_OPTIONAL_HEADER)&(pNTHeaders->OptionalHeader);

pImportDescriptor = (PIMAGE_IMPORT_DESCRIPTOR)((BYTE *)hMod + pOptHeader->DataDirectory[1].VirtualAddress);
看到了没有,这些win32 PE 格式要用到很多类型转换
在绝大多数病毒爱好者眼中,真正的病毒技术在Win32 PE病毒中才会得到真正的体现(令病毒极度疯狂的DOS时代已经过去)。并且要掌握病毒技术的精髓,学会Win32汇编是非常必要的。本节所涉及到的源代码全部采用Win32汇编语言编写。

Win32病毒同时也是所有病毒中数量极多,破坏性极大,技巧性最强的一类病毒。譬如FunLove、中国黑客等病毒都是属于这个范畴。
收到的鲜花
  • 广陵绝唱2009-01-07 18:16 送鲜花  49朵   附言:鼓励汇编,但不提倡黑客。 爱编程,爱BC ...
2008-07-20 16:45
yole
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2008-7-10
收藏
得分:0 
[bo][un]独孤小梦[/un] 在 2008-7-20 00:00 的发言:[/bo]

#include  
void main()
{
    int n=2;
    char a='e';
    int *ptr;   
    ptr=&n;
    printf("%d",*ptr);
}
你最后少了*号!这里加个*号看看怎么样!


我知道少了个*,但是我想知道为什么最后的结果是X????????
2008-07-20 23:00
yole
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2008-7-10
收藏
得分:0 
[bo][un]missiyou[/un] 在 2008-7-20 16:45 的发言:[/bo]

pDosHeader = (PIMAGE_DOS_HEADER)hMod;
pNTHeaders = (PIMAGE_NT_HEADERS)((BYTE *)hMod + pDosHeader->e_lfanew);
pOptHeader = (PIMAGE_OPTIONAL_HEADER)&(pNTHeaders->OptionalHeader);

pImportDescriptor  ...



哥哥,你说这个干嘛呀?
2008-07-20 23:01
yole
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2008-7-10
收藏
得分:0 
[bo][un]chinahelloworld[/un] 在 2008-7-20 16:33 的发言:[/bo]

printf("%c",*(int*)ptr); 既然是打印字符,并且ptr是指向char型的数据,为什么要把它强制转换成int*型,哪个白痴写的教材。鬼才知道这样写的程序有没有隐藏的错误。
建议楼主立即把你的教科书卖废纸(遗害无穷), ...



呵呵,可能是我的错误,我没说清楚,这个程序还有很多地方省略了,我只是想问问我那么改了为什么会得出X这个值。

PS:现在看的这本书是中国人编的,“深入浅出C语言程序设计”,个人感觉比谭浩强那本好。C plus primer还是不错的。
2008-07-20 23:05
sxby_01
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-7-5
收藏
得分:0 
开始学习编程都快一个月了,如今看过高手对招,却还是不知道所云,
新手们加油啊
2008-07-20 23:44
快速回复:C指针
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046707 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved