C分段故障

C分段故障,第1张

概述我已经阅读了有关分段错误的内容,但未能明白为什么应该由以下代码引起. #include<iostream>#include <stdlib.h>using namespace std;int main(){ int input; cout << "Enter length of desired array." << "\n"; cin >> input; int A [ 我已经阅读了有关分段错误的内容,但未能明白为什么应该由以下代码引起.

#include<iostream>#include <stdlib.h>using namespace std;int main(){  int input;  cout << "Enter length of desired array." << "\n";  cin >> input;  int A [input];  //Populate and print the Array.  for(int i=0; i<sizeof(A); i++){    A[i] = rand()%99;    cout << A[i] << " ";  }  return 0;}
解决方法 这里有几个问题:

>您正在使用可变长度数组.它不允许在C中.所以它必须是编译器扩展.
> sizeof(A)以字节为单位返回大小,而不是元素数.因此,您正在超越阵列.您需要将其除以每个元素的大小.

您应该将循环更改为:

for(int i=0; i < input; i++){

编辑:这是一个不使用可变长度数组的解决方案:

int main(){    int input;    cout << "Enter length of desired array." << "\n";    cin >> input;    int *A = new int[input];   //  Allocate    //Populate and print the Array.    for(int i=0; i<sizeof(A); i++){        A[i] = rand()%99;        cout << A[i] << " ";    }    delete[] A;    //  Free the allocated memory    return 0;}
总结

以上是内存溢出为你收集整理的C分段故障全部内容,希望文章能够帮你解决C分段故障所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1219466.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存