结构中的指针是什么意思

时间:2015-07-23 06:29:17

标签: c pointers struct syntax c-preprocessor

我已阅读相关问题,但我无法理解;当我们有这个时意味着什么:

struct address {
# define N (4) 
struct address *nb[N]; } *site;

#define N (4)置于struct {1}区别于struct之外的区别是什么意思?我不明白struct address *nb[N];确实。你能否清楚地解释一下,结构中的指针究竟是什么意思;我根本无法消化它。

3 个答案:

答案 0 :(得分:2)

我认为发生的事情是编写该代码的人并不了解预处理器宏的工作原理。

你的问题的答案是,在结构内部和结构外部定义它之间没有区别,除了在结构外定义它是更好的编码风格。

顺便说一句,#define的每一部分都是不正确或迟钝的。它应该是:

#define N 4

关于结构中指针的另一个问题,nb元素只是指向同一结构的指针数组。

目前尚不清楚这将如何有用,因为该结构不包含任何其他元素,使其对像树这样的东西毫无意义。我的猜测是它被用于一些自定义内存管理器。

答案 1 :(得分:1)

在您的代码中,首先更改

 # define N (4); 

 # define N (4)

然后,要说,#define就像文本替代品一样。因此,在预处理之后,您的代码看起来像

struct address 
{
   struct address *nb[4]; 
} *site;
  

如果它在struct

之外有什么区别

没什么,它是一样的。

  

什么结构地址* nb [N];确实

嗯, 意味着nbstruct address的成员,是4个指针数组的类型到struct address

答案 2 :(得分:1)

可以改写为:

<head>
  <script language="javascript">
    function WriteToFile(passForm) {
       var ExcelApp = new ActiveXObject("Excel.Application");
       var ExcelSheet = new ActiveXObject("Excel.Sheet");
       ExcelSheet.ActiveSheet.Cells(1,1).Value = passForm.FirstName.value;
       ExcelSheet.ActiveSheet.Cells(1,2).Value = passForm.LastName.value;
       ExcelSheet.SaveAs("D:\\TEST.xlsx");
       ExcelSheet.Application.Quit();
    }
 </script>
</head>
<body">
  <p>create a excel file with following details -</p>
<form>
   Type your first name: <input type="text" name="FirstName" size="20">
   Type your last name: <input type="text" name="LastName" size="20">
   <input type="button" value="submit" onclick="WriteToFile(this.form)">
</form>
</body>
</html>

希望这有帮助。