C 可能是错误使用内存分段错误
当我分配给整数“number”的第一个值被分配给R数组时,我的程序崩溃。它可能与我创建的指针有关,我似乎无法找到问题所在。如果我省略了代码的这一部分:C 可能是错误使用内存分段错误,c,segmentation-fault,C,Segmentation Fault,当我分配给整数“number”的第一个值被分配给R数组时,我的程序崩溃。它可能与我创建的指针有关,我似乎无法找到问题所在。如果我省略了代码的这一部分: else{ while (k<=n/2){ temp2=R[k]; R[l-1]=temp2; R[k]=R[l-1];} l-=1; k+=1; } else{ while(k n有什么值?它是未初始化的,所以用C语言调用未定义的行为。任何事
else{
while (k<=n/2){
temp2=R[k];
R[l-1]=temp2;
R[k]=R[l-1];}
l-=1;
k+=1;
}
else{
while(k
n
有什么值?它是未初始化的,所以用C语言调用未定义的行为。任何事情都可能发生,崩溃是一回事
n
有什么值?它是未初始化的,所以用C语言调用未定义的行为。任何事情都可能发生,崩溃是一回事。R=(int*)malloc(n*sizeof(int));
移到scanf(“%d”,&n)之后;
。您正在使用未初始化的变量n
分配数组R。非常感谢您,并请原谅我提出了这样的问题,因为我是noobishness。另外,block是错误的。什么不对?R=(int*)malloc(n*sizeof(int));
移到scanf(“%d”,&n)之后
。您正在使用未初始化的变量n
分配数组R。非常感谢,并请原谅我由于我的无知而提出此类问题。还有,else block是错误的。什么不对?谢谢!这确实是问题所在。@Achiles太好了。堆栈溢出的下一步是接受answ呃,单击左边的绿色复选标记对您帮助最大。这将为您赢得几分学分。谢谢!这的确是个问题。@Achiles很棒。堆栈溢出的下一步是通过单击左边的绿色复选标记接受对您帮助最大的答案。这将为您赢得几分学分。
#include <stdio.h>
main(){
int i,n,number,temp,j,k=0,l,temp2;
int *R;
R=(int *)malloc(n*sizeof(int));
printf("Dwse mou to megethos tou pinaka se parakalw poly:\n");
scanf("%d", &n);
for(i=0; i<n; i++){
printf("Dwse enan thetiko akeraio arithmo:\n");
scanf("%d", &number);
R[i]=number;
}
for(i=1;i<n;i++){
temp=R[i];
j=i-1;
while((temp>R[j])&&(j>=0)){
R[j+1]=R[j];
j=j-1;
}
R[j+1]=temp;
}
l=n;
if (n%2==0)
printf("Einai adynato na ginei h taksinomhsh:\n");
else{
while (k<=n/2){
temp2=R[k];
R[l-1]=temp2;
R[k]=R[l-1];}
l-=1;
k+=1;
}
for(i=0; i<n; i++){
printf("R[%d]: %d\n", i, R[i]);
}
}
int i,n,number,temp,j,k=0,l,temp2;
int *R;
R=(int *)malloc(n*sizeof(int));