第一次作业 计科一班程晨

一、指针定义的学习

    1.观看视频:第八章指针与字符串

    2.代码文件列表

 

   3.手写笔记

               

  

   4.问题

      ·为什么int i;scanf("%d",i); 没有报错

        解决:问同学并且反复观看视频后明白整数和地址是一样大的,scanf认为传入的是i的地址,所以编译不会报错,但是运行会出错

     ·为什么*p=26后k=26

        解决:视频解释原因为 *是一个单目运算符,用来访问指针的值所表示的地址上的变量,在*p被赋值26后,说明在经历函数调用后i的值被改变,故而k=26

     ·关于*和&的混淆

      解决:上网解决。int a;    int *pa=&a;  那么*&a可以理解为*(&a),&a表示取变量a的地址(等价于pa),*(&)a表示取这个地址上的数据(等价于*pa),即*&a仍然等价于a。&*pa可以理解为&(*pa),*pa表示取得pa指向的数据(等价于a),&(*pa)表示数据的地址(等价于&a),所以&*pa等价于pa。

     ·相同类型指针间可以做什么

       解决:网上搜索后得到答案。可以比较大小,比较原则按照实际内存的高低位;可以赋值;两个相同指针变量相减可以获得在它们之间相隔的同类型元素个数

 

二、PTA作业

    1.存在的问题

      ·当定义指针时一定是 int *吗

       解决:看完视频并且浏览百度后知道,int *p; 中,int表示该指针变量所指向的数据的类型,例如int,double,float,datatype等等。p是一个指向int类型数据的指针变量,它指向哪一份数据应该由赋予它的值决定。

     ·什么时候必须带*什么时候不能带*

      解决:根据百度得知定义指针变量时必须带*,给指针变量赋值时不能带*。

猜你喜欢

转载自www.cnblogs.com/g-dragon-c/p/12412020.html