当前位置: 代码迷 >> C语言 >> 感觉乱的指针题
  详细解决方案

感觉乱的指针题

热度:337   发布时间:2007-07-14 16:32:11.0
感觉乱的指针题

1.
rev(*m)
{
*m++;
}
main()
{
int a;
int *p = &a;
rev(&a);
printf("%d,%d\n", a, *p);

}

2.
rev(*m)
{
*m++;
}
main()
{
int a;
int *p = &a;
rev(p);
printf("%d,%d\n", a, *p);

}

搜索更多相关的解决方案: 感觉  指针  

----------------解决方案--------------------------------------------------------
答案很简单:未定义行为!a未被赋初值!

想知道你的程序有多么糟糕吗?看下面:

$ gcc -Wall -W -pedantic -std=c99 -o bad bad.c
bad.c:1: 错误:expected declaration specifiers or ‘...’ before ‘*’ token
bad.c:2: 警告:返回类型默认为 ‘int’
bad.c: 在函数 ‘rev’ 中:
bad.c:3: 错误:‘m’ 未声明 (在此函数内第一次使用)
bad.c:3: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
bad.c:3: 错误:所在的函数内只报告一次。)
bad.c:4: 警告:在有返回值的函数中,控制流程到达函数尾
bad.c: 在顶层:
bad.c:6: 警告:返回类型默认为 ‘int’
bad.c: 在函数 ‘main’ 中:
bad.c:10: 警告:隐式声明函数 ‘printf’
bad.c:10: 警告:隐式声明与内建函数 ‘printf’ 不兼容


----------------解决方案--------------------------------------------------------
  相关解决方案