linux c 指针引起的段错误

学习笔记

#include<stdio.h>
#include<stdlib.h>
void f1(int* p);
int main(void)
{
  int *p;
  f1(p); 
  *p=4;
  printf("%d\n",*p);
  free(p);
  return 0;
}
void f1(int* p)
{
   p=(int*)malloc(sizeof(int));
}

改为如下解决,主要是因为函数f1中对p的修改在函数返回时就消失了

#include<stdio.h>

#include<stdlib.h>
void f1(int** p);
int main(void)
{
  int *p;
  f1(&p); 
  *p=4;
  printf("%d\n",*p);
  free(p);
  return 0;
}

void f1(int** p)
{
   *p=(int*)malloc(sizeof(int));
}

posted @ 2011-08-24 22:26  郭远威  阅读(326)  评论(1编辑  收藏  举报