C无法发送参数来运行

时间:2013-10-24 16:21:38

标签: c

有人能告诉我这里做错了什么:

#include <stdio.h>
#include <string.h>

main()
{
   int a = 3;
   int aa = 2;
   int *aaa;
   *aaa = 10;
   func(&a, &aa, aaa);
   printf("%d\n",a);
   printf("%d\n", *aaa);
}
void func(int *b, int *bb, int *bbb){
    *b = *bb;
    //int c = *bbb;
    printf("%d---\n",*b);
    //printf("%d c value \n",bbb);
}

我在运行时遇到分段错误

gcc编译器gcc(GCC)4.1.2,关于linux

这是错误:

>>gcc file.c -o file
file.c:14: warning: conflicting types for ‘func’
file.c:10: warning: previous implicit declaration of ‘func’ was here
>>./file
Segmentation fault

3 个答案:

答案 0 :(得分:1)

问题如下: -

*aaa = 10;

aaa是一个指针,只有在将内存分配给aaa之后才能执行上述操作:

aaa = malloc(sizeof(int)) ;

答案 1 :(得分:1)

int *aaa;
*aaa = 10;

您已经定义了一个指向整数的指针,但是您没有定义aaa可以指向的任何整数。此时aaa包含一些垃圾地址,因此当您执行*aaa = 10时,您正试图在该垃圾位置写入。结果你得到了分段错误。

要解决这个问题,你需要定义一个这样的整数:

int aaaValue;
int *aaa = &aaaValue;
*aaa = 10;

答案 2 :(得分:1)

int * aaa;未初始化,即aaa指向某个垃圾地址(可能超出您的程序段)并且您正在修改此加法器* aaa = 10;

您是否需要转发ddeclaration来编译此代码?