指针索引:获得意外的值

时间:2017-05-28 04:43:23

标签: c++ loops pointers memory indexing

1 4 9 16 25 36 49 64 81 100 

上面的代码应该打印出来:

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

rsa.FromXmlString(PrivateKey);

但是,它会打印随机整数值,这些值没有任何意义,至少在第一个之后。通过调试器运行代码后,在main方法中第一次运行for循环后立即删除ptr地址,我无法理解为什么。另外,我不知道f()方法的目的是什么,我不认为它应该改变任何东西,但是当我从main中删除它时,第一个值准确地返回(之后的所有内容仍然是错误的。)什么是上?

2 个答案:

答案 0 :(得分:2)

试试这个:

simple-statement =
      empty-statement
    | assignment-statement
    | procedure-statement
    | goto-statement

" int arr [10]"在computeSquares完成运行后发布。

答案 1 :(得分:1)

您收到此结果是因为您误解了基本语言功能。除了MsrButterfly的答案,谁已经指出了最重要的问题,请允许我给你以下建议:

  • 忘记使用原始指针;这是一种危险的做法,很难维护和扩展,并且肯定会导致您编写内存泄漏代码。你最好看看一些拥有例如STL文件的STL文档。您可以使用的std :: vector容器而不是数组arr
  • 你的computeSquares方法是危险的,因为你接受一个变量n参数应该是你的数组的大小。在您的方法中,首先使用硬编码大小10定义arr,然后设置n = 10;我建议你避免使用这种结构,就像你在这种情况下维护两个依赖于那个数字10的变量一样。