指向stuct数据的指针 [英] pointer to stuct data
问题描述
你好,
我正在研究一个代码,它的数据结构如下:
typedef struct {
char * infile;
char inoptsbuf [10];
char * outfile;
} cmdoption_a;
cmdoption_a * cmdoption;
和初始化如下:
cmdoption-> infile = 1;
cmdoption-> outfile = 1;
cmdoption-> inoptsbuf =''\ 0'';
我真的很困惑,因为整数是分配给上面的变量吗?!!!!
任何帮助?? !!
bob
Robert S写道:hello,
我正在调查一个代码,其中包含如下数据结构:
typedef struct {
char * infile;
char inoptsbuf [10];
char * outfile;
} cmdoption_a;
cmdoption_a * cmdoption;
和初始化如下:
c mdoption-> infile = 1;
cmdoption-> outfile = 1;
cmdoption-> inoptsbuf =''\ 0'';
我真的很困惑因为整数是分配给上面的变量吗?!!!!
任何帮助?? !!
你*应该*混淆;代码(正如你所引用的那样)没有任何意义
,会(应该?)不能编译,当然也无法工作。
为什么不发布*真*代码(即剪切和粘贴,不要转录)?我是
肯定有人可以解决任何困惑。
HTH,
--ag
-
Artie Gold - 德克萨斯州奥斯汀
http://it-matters.blogspot.com (新帖子12/5)
http://www.cafepress.com/goldsays
thanks
它是一个转码器程序,编译运行没有问题
这里是代码:
typedef struct {
char * infile;
/ *输入图像文件。 * /
int infmt;
/ *输入图像文件格式。 * /
char * inopts;
char inoptsbuf [OPTSMAX + 1];
char * outfile;
/ *输出图像文件。 * /
int outfmt;
char * outopts;
char outoptsbuf [OPTSMAX + 1];
int verbose;
/ *详细模式。 * /
int debug;
int version;
int_fast32_t cmptno;
int srgb;
} cmdopts_t;
..
..
..
..
..
cmdopts_t * cmdopts;
cmdopts-> infile = 0;
cmdopts-> infmt = -1;
cmdopts-> inopts = 0;
cmdopts-> inoptsbuf [0] =''\''';
cmdopts-> outfile = 0;
cmdopts-> outfmt = -1;
cmdopts-> outopts = 0;
cmdopts-> outoptsbuf [0] =''\ 0'';
cmdopts - > verbose = 0;
cmdopts-> version = 0;
cmdopts-> cmptno = -1;
cmdopts- > debug = 0;
cmdopts-> srgb = 0;
..
..
..
..
" Artie Gold" < AR ******* @ austin.rr.com>在消息新闻中写道:3c ************* @ individual.net ...Robert S写道:你好,
typedef struct {
char * infile;
char inoptsbuf [10];
char * outfile;
} cmdoption_a;
cmdoption_a * cmdoption;
和初始化如下:
cmdoption-> infile = 1 ;
cmdoption-> outfile = 1;
cmdoption-> inoptsbuf =''\ 0'';
我真的很困惑,因为整数被分配给以上变量?!!!!
任何帮助?? !!
你*应该*混淆;代码(正如你所引用的那样)毫无意义
,(应该?)不能编译,当然也不可能工作。
为什么不发布*真正的*代码(即剪切和粘贴,不要转录)?我确定这里有人可以解决任何困惑。
HTH,
--ag
-
Artie Gold - 德克萨斯州奥斯汀
http://it-matters.blogspot.com (新帖子12/5)
http://www.cafepress.com / goldsays
请不要顶尖。你的回复属于下面的,或者用任何引用的文字穿插
。
在原始邮件中,你写道:< blockquote class =post_quotes>typedef struct {
char * infile;
char inoptsbuf [10];
char * outfile;
} cmdoption_a ;
cmdoption_a * cmdoption;
和初始化如下:
cmdoption-> infile = 1;
cmdoption-> outfile = 1;
cmdoption-> inoptsbuf =''\ 0'';
但实际代码说(修剪了一下):
typedef struct {
char * infile;
[...] char * outfile;
[...] char outoptsbuf [OPTSMAX + 1];
[...]} cmdopts_t;
[...] cmdopts_t * cmdopts;
cmdopts-> infile = 0;
[...] cmdopts-> outfile = 0;
[...] cmdopts-> outoptsbuf [0] =''\''';
初始化一个带有1的指针几乎肯定会使没意义,但0
是一个空指针常量。我更喜欢使用宏NULL(在< stddef.h>和其他几个标准头文件中定义
),但是一个朴素的0
是完全合法的。
这就是为什么最好剪切并粘贴你要求的实际代码,而不是试图解释它;这很容易
意外地改变了你要问的事情。
-
Keith汤普森(The_Other_Keith) ks***@mib.org < http://www.ghoti.net/~kst>
圣地亚哥超级计算机中心< *> < http://users.sdsc.edu/~kst>
我们必须做点什么。这是事情。因此,我们必须这样做。
hello,
I am investigating a code,which has data struct deelacration as follow:
typedef struct {
char *infile;
char inoptsbuf[10];
char *outfile;
} cmdoption_a;
cmdoption_a *cmdoption;
and intialization as follow:
cmdoption->infile=1;
cmdoption->outfile=1;
cmdoption->inoptsbuf=''\0'';
I am really confused since an integer is assign to the above variables?!!!!
any help??!!
bob
Robert S wrote:hello,
I am investigating a code,which has data struct deelacration as follow:
typedef struct {
char *infile;
char inoptsbuf[10];
char *outfile;
} cmdoption_a;
cmdoption_a *cmdoption;
and intialization as follow:
cmdoption->infile=1;
cmdoption->outfile=1;
cmdoption->inoptsbuf=''\0'';
I am really confused since an integer is assign to the above variables?!!!!
any help??!!
You *should* be confused; the code (as you''ve quoted it) makes no sense
at all, would (should?) not compile and certainly couldn''t possibly work.
Why not post the *real* code (i.e. cut and paste, don''t transcribe)? I''m
sure someone here could clear up any confusion.
HTH,
--ag
--
Artie Gold -- Austin, Texas
http://it-matters.blogspot.com (new post 12/5)
http://www.cafepress.com/goldsays
thanks
It is a transcoder proram which compile and run without a problem
here is the code:
typedef struct {
char *infile;
/* The input image file. */
int infmt;
/* The input image file format. */
char *inopts;
char inoptsbuf[OPTSMAX + 1];
char *outfile;
/* The output image file. */
int outfmt;
char *outopts;
char outoptsbuf[OPTSMAX + 1];
int verbose;
/* Verbose mode. */
int debug;
int version;
int_fast32_t cmptno;
int srgb;
} cmdopts_t;
..
..
..
..
..
cmdopts_t *cmdopts;
cmdopts->infile = 0;
cmdopts->infmt = -1;
cmdopts->inopts = 0;
cmdopts->inoptsbuf[0] = ''\0'';
cmdopts->outfile = 0;
cmdopts->outfmt = -1;
cmdopts->outopts = 0;
cmdopts->outoptsbuf[0] = ''\0'';
cmdopts->verbose = 0;
cmdopts->version = 0;
cmdopts->cmptno = -1;
cmdopts->debug = 0;
cmdopts->srgb = 0;
..
..
..
..
"Artie Gold" <ar*******@austin.rr.com> wrote in message news:3c*************@individual.net...Robert S wrote:hello,
I am investigating a code,which has data struct deelacration as follow:
typedef struct {
char *infile;
char inoptsbuf[10];
char *outfile;
} cmdoption_a;
cmdoption_a *cmdoption;
and intialization as follow:
cmdoption->infile=1;
cmdoption->outfile=1;
cmdoption->inoptsbuf=''\0'';
I am really confused since an integer is assign to the above variables?!!!!
any help??!!
You *should* be confused; the code (as you''ve quoted it) makes no sense
at all, would (should?) not compile and certainly couldn''t possibly work.
Why not post the *real* code (i.e. cut and paste, don''t transcribe)? I''m
sure someone here could clear up any confusion.
HTH,
--ag
--
Artie Gold -- Austin, Texas
http://it-matters.blogspot.com (new post 12/5)
http://www.cafepress.com/goldsays
Please don''t top-post. Your response belongs below, or interspersed
with, any quoted text.
In your original message, you wrote:typedef struct {
char *infile;
char inoptsbuf[10];
char *outfile;
} cmdoption_a;
cmdoption_a *cmdoption;
and intialization as follow:
cmdoption->infile=1;
cmdoption->outfile=1;
cmdoption->inoptsbuf=''\0'';
but the actual code says (trimmed a bit):
typedef struct {
char *infile; [...] char *outfile; [...] char outoptsbuf[OPTSMAX + 1]; [...] } cmdopts_t; [...] cmdopts_t *cmdopts;
cmdopts->infile = 0; [...] cmdopts->outfile = 0; [...] cmdopts->outoptsbuf[0] = ''\0'';
Initializing a pointer with 1 almost certainly makes no sense, but 0
is a null pointer constant. I''d prefer to use the macro NULL (defined
in <stddef.h> and several other standard headers), but an unadorned 0
is perfectly legal.
This is why it''s best to cut-and-paste the actual code you''re asking
about rather than trying to paraphrase it; it''s too easy to
accidentally change the very thing you''re asking about.
--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
这篇关于指向stuct数据的指针的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!