关于单片机C语言指针问题
我编写了一个单片机C语言编写了一个程序,其中有这样一部分:uchar*p;.......p=&s1;.......p=&s2......也就是程序前后指针p先后指向了不同...
我编写了一个单片机C语言编写了一个程序,其中有这样一部分: uchar *p; ....... p=&s1; ....... p=&s2 ...... 也就是程序前后指针p先后指向了不同的变量。 在KEIL中编译时,系统提示:warning 我想问一下: 1.经过上面一小段程序,p最终指向了哪里?当p=&s2后,s1的值改变,会影响*p的值吗? 2.一个指针变量先后指向不同的变量,会导致程序错乱吗?
展开
展开全部
P最终指向了s2,假如当前P指向s1,那么*P的值会改变。如果P不指向S1,那么S1值的改变不会造成*p值的改变。
指针是非常灵活的,它可以先后指向同一类型(只能是p初始化时指定的变量类型)的不同的变量。但是如果你将它指向了不同类型的变量,编译器会报警或者编译通不过,如果在这种情况下编译通过,则非常有可能造成程序错乱。
另外,p的值是它所指向的变量的地址值,*p才是p指向的变量的值。*的意思其实是间接寻址,意即“给我拿出P地址的内容”。
指针是非常灵活的,它可以先后指向同一类型(只能是p初始化时指定的变量类型)的不同的变量。但是如果你将它指向了不同类型的变量,编译器会报警或者编译通不过,如果在这种情况下编译通过,则非常有可能造成程序错乱。
另外,p的值是它所指向的变量的地址值,*p才是p指向的变量的值。*的意思其实是间接寻址,意即“给我拿出P地址的内容”。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询