该代码,数组和指针的输出是什么

时间:2019-02-22 21:24:35

标签: c arrays pointers data-segment

我对以下代码有一些疑问。

  1. 如果我有某种类型的指针,使用数组索引是什么意思?在此示例中,window.location.replace(([baseUrl, somethingElse] as string[]).join("\n")) window.location.replace((<string[]>[baseUrl, somethingElse]).join("\n")) 代表什么(ptr是某种类型的指针)?
  2. 该程序的输出应该为window.location.replace(((): string[] => [baseUrl, somethingElse])().join("\n")) ,但我不确定为什么,我的问题出在行ptr[3]上,我不知道该行如何改变to be or not to be (Hamlet)数组的第三个元素。

    (&ptr2)[3] = str

使用this可视化工具,我们可以看到ptr1指向str,我只是不明白为什么会这样。

帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

  

如果我有某种类型的指针,那么使用数组索引是什么意思?在此示例中,ptr [3]代表什么(ptr是某种类型的指针)?

在C中,a[i]*(a + i)的语法糖。即使指针没有指向数组,这也是有效的语法。

  

该程序的输出应该是(Hamlet),但我不确定为什么,我的问题是行(&ptr2)[3] = str,我不知道该怎么做这行更改了ptr1数组的第三个元素。

(&ptr2)[3]行在str1中没有任何改变。它尝试访问未知的内存位置。

如果告诉您该程序的输出应该是“(是或不是)(哈姆雷特)”,那么您被告知是错误的。