标题:API的问题
只看楼主
panicemaster
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-11-15
 问题点数:0 回复次数:8 
API的问题
以前看过一点C语言,对API是一窍不通的。想问一个有点可笑的问题。
我看到一大堆的代码就晕,不知道哪个函数、参数的是系统规定非要这样写的,哪个是编程人员便于理解而创造的,像下面这个:
typedef struct{
            HANDLE hProess;
            HANDLE hThread;
            ……
            }
哪些单词是必须背下来的,哪些是可以自己定义的,像我把hProcess换成a,可以吗?
搜索更多相关主题的帖子: API 
2007-12-01 09:55
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
得分:0 
呵呵,楼住被名词吓住了
HANDLE是一个变量类型,就可以看成long,实际上也是long,也就是长整形,这下明白了吧,那么原结构你看成这样你就明白了
struct sssss
{
     long  bbb;
    long aaaa;
};

知道了吧,其实这个结构只是增加了DOS中没有的变量类型而已,HANDLE是一个32位长的数据,long也是,所以可以将handle看成long,当然也可以看成其它的,如char,int,但使用的时候还是要用HANDLE

2007-12-01 10:01
panicemaster
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-11-15
得分:0 
太感谢了!
(1)您的意思是前面的单词是类型,后面的是变量吧?
(2)要是HANDLE只有long的意思的话,那么为什么系统会知道我们写“HANDLE hProcess”这代码的意思是在“新建进程内核句柄”(注释上是这样写的)?难道是大括号后面的PROCESS_INFORMATION在起作用?(PROCESS_INFORMATION在写的时候可以换成aaa吗)
2007-12-01 10:14
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
得分:0 
楼住理解错了,HANDLE hProcess中的变量hProcess是保存内核句柄,其实内核句柄就是一个数值,当然具体是多少没必要知道。只所以可以替换成long就是应为内核句柄是个数值,具体数据定义我就不在详细说明,如果你懂汇编的话,就好说了。
还有变量不是起作用,仅仅是保存数据
所谓结构就是几一个变量组成一个新类型。
比如,你现在要保存一个人的名字,年龄,性别,那么就需要用到如下类型变量
char  name[100];  //保存名字
int age;   //保存年龄
bool xb;  //保存性别, true表男,反之女

这样,如果要保存很多这样的数据,如一个班级的名单表,定义起来就麻烦很多了
所以用结构封装,也就是
struct data
{
   char  name[100];  //保存名字
int age;   //保存年龄
bool xb;  //保存性别, true表男,反之女
}
 
这样,在保存数据是,直接用data定义,就等于定义了3个变量(name,age,xb),如
data a,b,c;
那么a、b、c就上data变量了,类型是data,变量名是a b c,abc都具备(name,age,xb类型变量

差不多就这样了

2007-12-01 10:37
panicemaster
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-11-15
得分:0 
[font=Helvetica]让版主笑话了,呵呵[size=10.5pt][/size][/font]
[font=宋体]那么最后再问一下,以下[/font][size=10.5pt]5[font=宋体]个红色的单词,在实际编程的代码中,哪些是是可以任意改换的,像改成[/font]aaa[font=Helvetica][/font][/size]
typedef struct{
            HANDLE hProess;

            HANDLE hThread;
            ……
            }PROCESS_INFORMATION
2007-12-01 10:54
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
得分:0 
jp ,先把C里的结体体学完了再来问

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2007-12-01 15:12
panicemaster
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-11-15
得分:0 
我学了啊啊
2007-12-01 17:17
Janlex
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:303
专家分:0
注 册:2006-9-12
得分:0 
typedef struct{
            HANDLE hProess;
            HANDLE hThread;
}PROCESS_INFORMATION;

typedef struct{
            HANDLE A;
            HANDLE B;
}C;

typedef struct这两个是关键字.不能改
HANDLE是类型,不能改.

★★★★★欢迎光临我的博客 ★★★★★
http://www.
2007-12-01 17:29
panicemaster
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-11-15
得分:0 
太感谢了,
哪么编程序的时候首先要把“typedef struct{HANDLE A;HANDLE B;}C; ”这一大串写上,后面再调用a,b,c,是吧?
2007-12-01 18:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-189676-1-1.html




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

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