C语言08

1.指针:必讲内存。

    (1)内存  数据都存储在内存上,一段连续的空间,内存地址就是内存单元的地址,16进制。内存单元,内存存储数据的最小格子,最小的是字节,1字节=8bite,

    (2)数据的存储,按照数据的大小,在内存中整体存放,

    (3)数据的访问,直接访问,间接访问。

                  直接访问:通过变量名访问内存。间接访问:是通过内存地址访问读取数据。

     (4)指针变量:存储地址的变量,

2.指针变量,声明:[类型修饰符]*[指针变量名]=初始值(地址)/NULL;

   (1)声明的时候注意(*)前面的类型修饰符,表示指向数据的类型,故称基类型;

   (2)取值符和取址符  (*)和(&),(*)取地址指向的值,(&)取变量在内存中的地址,取的是首地址。(*)在定义中,没有实际意义,只是一个标志,后面是指针变量,后面的才是完整的变量名。在非定义的时候,(*)后面紧跟指针变量,就是取指针变量的存储的地址对应的值。

   (3)指针变量的大小, 在64位操作系统中占8个字节,在32位操作系统中占4个字节。

   (4)指针的运算:指针变量的运算,只有加减,没有乘除,且与指针变量的类型有关。 int *p+1 就是向高位移动 1*int ,

3.指针类型不匹配:存储倒置,倒存倒去,

    原则(1)数据在向内存中存储的时候,有一个倒存现象,    

    原则(2)指针变量读取内存数据的时候,从指针指向内存的地址开始,读取指针变量类型的长度

     注意::指针类型一定要匹配。

4。指针和数组:数组名就是数组的首地址。*p=p[0];*(p+1)=p[1]=a[1];(语法糖);一些语法上的精简,可以和复杂的语法实现同样繁荣效果,加快开发速度。

5.数组和指针的区别 

  (1)指针是变量,可以冲定向,数组名是常量,不能改变,

      (2)sizeof对指针永远返回4/8;对数组名,返回的是数组的内存大小(数组名作为函数参数例外);

6.指针的重定向,pi=&a;pi=&b; 重新指向。

 1.指针和字符串 字符串数组;

 2.字符串函数可以使用字符串指针的,相当于使用数组首地址。

 3.指针和函数:

利用指针变量,打印数组所有的值。

(1)通过char 类型指针,计算字符串长度。注重简洁 while(*p++) k++;

原文地址:https://www.cnblogs.com/ytmaylover/p/5049130.html