宏达兴:关于指针的位置问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/11 15:50:15
关于指针的位置问题(1)
main()
{
int x,y;
x=1,y=2;
int *p1,*p2;
p1=&x,p2=&y;
}
(2)
main()
{
int x,y;
int *p1,*p2;
x=1,y=2;
p1=&x,p2=&y;
}

请问高手们为什么这两个函数上面的错误,而下面的正确呢?这两个函数的区别仅仅在于x=1,y=2;的位置不同,然而位置的不同说明了什么呢?小生愚昧无知,还望好心人能尽快解答,愚生将感激不尽!!!

其实是这么回事:

在纯C中, 所有的变量的声明, 必须写在最前面

在C++的环境中, 比如VC++6.0就是常说的VC, 对这个要求不是很严格, C++的语法, 只要在使用前声明就可以了, 这点和C不一样, 所以从这点来说, C++的确比C要方便

当然还要注意楼上所说的语法细节。
声明时可以这样 int x = 1, y = 2; 但声明和赋值分开时必须这样 int x, y; x = 1; x = 2;

把语法书看细点儿, 以上问题就都解决了:)

这两个都不对,
main()
{
int x,y; //这里可以用逗号隔开
x=1;y=1;//这里必须用分号隔开
int* p1,*p2;
p1=&x;p2=&y//这里也要用分号隔开
}
这样就可以用整型指针变量指向整形变量了。

楼主不妨试编译下下面这个代码
main()
{
int i;
i=1;
int j=1;
printf("%d",i);
}
是不是和你的一式报同样的错(Expression syntax in function main)
C中必须要先定义变量~~~~~~~~

我用Microsoft Visual C++ 6.0把以上两个函数都编译了,都没有错.按道理说,第一个函数是在X,Y有值的情况下把它们的地址赋给P1,P2的,而第二个函数是在X,Y无值的情况下赋的.但是无论X,Y有无值,他们的地址都是唯一的.所以这两个函数应该没有错.