前言
本人文章 ,“C语言指针”答案会放在本章,我个人尽量先按“正常”的讲,并附带举个例子,但是例子为假设请勿过于敏感。
一、章
1.2.1“深”入了解-题目:
①请思考如果我们改变了num值,请问指向num的指针needle会改变吗?
例如num=1
答案:
①不会因为题问的是“指针有无改变”,但实际上改变num只会改变num存储的值,不会改变num地址,所以没有改变needle指针的值,但是间接改变了needle指向的地址上的值。
举个例子:
就像一只雄狗名为needle,它有一只对象“名为num”的狗。
当你对“名为num对象”这只狗减了9斤肥,问你会影响指向这只母狗的“对象,名为needle”雄狗的体重吗。
②请思考如果我们改变了needle值,请问num会改变吗,请问这needle指向谁、对needle解引用值为?
例如T i=0;
needle=&i;
②不会,因为只是改变了needle的指向,不会影响num、所以needle指向i、对其解引用为i的值所以为0。
举个例子:
雄狗“名为needle”他有一只对象“名为num”的狗,但你希望它换一只对象,便声明定义了同种族(类型)的对象“名为i”的狗。
③运行后i为5、num为10、needle指向i、needle解引用为5。
④共5处,分别为:
1)nu未初始化,应为T nu=5;
2)needle=i;应该改成needle=&i;
3)printf中取地址应为%p
4)printf中要i的地址应为needle
5)printf中要i的值应为i
改正:
T nu=5;
num=1,i=9;
needle=NULL;
needle=&i;
printf ("变量i地址%p\n",needle);
num=nu+(*needle);
printf ("%d+%d=%d",i,nu,num);