struct S
{
int i;
int * p;
};
void main()
{
struct S s;
int * p = &s.i;
p[0] = 4;
p[1] = 3;
s.p = p;
s.p[1] = 1;
s.p[0] = 2;
}
问程序会在哪一行死掉。
-
引用 semiscone 2008/12/18 16:41:04 发表于2楼的内容
-
-
-
zhiy66 发表于 2008/12/19 13:08:11
C语言的精髓就在于指针的使用,应该说指针用的好了,在节省空间和提高效能方面都是有很大益处的.
所以指针没学好还是补习补习吧 , 呵呵
引用 zhiy66 2008/12/19 13:08:11 发表于3楼的内容
-
-
-
-
sinside 发表于 2008/12/31 14:42:57
void main()
{
struct S s;
int * p = &s.i;
p[0] = 4; // s.i = 4
p[1] = 3; // s.p = 3 假设s.p是16bit的指针
s.p = p; // s.p == &s.i
s.p[1] = 1; // s.p = 1
s.p[0] = 2; // [0x1]这个地址(16bit)的内容为2
}会不会死还要看编译器和芯片,如果某些芯片的这些地址都是允许操作的,那不见得会死。
引用 sinside 2008/12/31 14:42:57 发表于4楼的内容
-
-
引用 lthlycyj 2009/3/23 21:43:01 发表于5楼的内容
-
引用 中州刀客 2009/3/24 10:21:00 发表于6楼的内容
-
引用 semiscone 2009/3/24 21:20:29 发表于7楼的内容