美文网首页
第1周:指针与字符串——1.2 指针运算

第1周:指针与字符串——1.2 指针运算

作者: hyt222 | 来源:发表于2017-06-12 13:49 被阅读0次

1.指针加1?

对指针加 1 的动作,意味着要把它移到下一个单元去。它的地址值上加一个 sizeof 那个指针的类型。

int a[10];  int *p = a;   *(p+1) 指向 a[1]  *(p+n) 指向 a[n]

如果指针不是指向一片连续分配的空间(如数组),则这种运算没有意义。

2.指针计算

两个指针相减得到两个地址之间有几个这样类型的东西在。


3. *p++

取出 p 所指的那个数据来,完事之后顺便把 p 移到下一个位置去。

* 的优先级虽然高,但是没有 ++ 高。

常用于数组类的连续空间操作。

4.指针比较

指向a[0]的指针比指向a[5]的指针小


5. 0地址

你的内存中有 0 地址(每个程序都有 0 地址),但是 0 地址通常是个不能随便碰的地址。所以你的指针不应该具有 0 值。

可以用 0 地址来表示特殊的事情:返回的指针是无效的;指针没有被真正初始化(先初始化为 0)。

NULL 是一个预先定义的符号,表示 0 地址。(有的编译器不愿意你用 0 来表示地址)。

6.指针的类型

无论指向什么类型,所有的指针大小都是一样的,因为都是地址。

但是指向不同类型的指针是不能互相赋值的(为了避免用错指针)。


7.指针的类型转换

void* 表示不知道指向什么东西的指针(计算时与 char* 相同,但不相通)。

指针也可以转换类型: int *p = &i;   void* q = (void*)p;  这并没有改变 p 所指的变量的类型,而是让后人用不同的眼光通过 q 看它所指的变量。

8.用指针来做什么

需要传入较大的数据时用作参数;

传入数组后对数组做操作;

函数返回不止一个结果(需要用函数修改不止一个变量);

动态申请内存。

9. malloc 和 free

如果申请失败则返回 0 (NULL)。

错误用法:    p = &i;   free(p);

良好的习惯是,有一个指针出来了,先初始化为 0 。void *p = 0; free(p);

相关文章

  • 第1周:指针与字符串——1.2 指针运算

    1.指针加1? 对指针加 1 的动作,意味着要把它移到下一个单元去。它的地址值上加一个 sizeof 那个指针的类...

  • C初阶5:指针

    1. 指针运算 1.1 算术运算 加减+、-指针与整数相加:表示指针指向下个变量。指针与整数相减:表示指针指向上个...

  • iOS 指针(C指针)

    运算符 & 指针变量的定义 指针与数组

  • C语言的指针大归纳Three

    【指针的算术运算】 指针运算与普通数值运算不同,先给个例子吧;eg: /* 结合【C语言的指针大归纳Two】的知识...

  • 关于golang指针的理解与使用

    Go指针理解 Go 有指针,但是没有指针运算。你不能用指针变量遍历字符串的各个字节。在 Go 中调用函数的时候,得...

  • C语言——第四次笔记

    指针指针的定义指针的类型指针的指向内容指针的运算数组与指针指针与函数动态分配内存结构体文件读写头文件与实现文件实例...

  • C语言续

    指针指针的定义指针的类型指针的指向内容指针的运算数组与指针指针与函数动态分配内存结构体文件读写头文件与实现文件实例...

  • 指针

    指针:一个变量,其值为另一个变量地址; 指针的算术运算 指针的递增 指针与数组的关系 可以使用指针的算术运算符来访...

  • 学习笔记3(指针运算,函数参数与指针,数组指针,二级指针)

    一、指针运算 二、数组与指针 三、指针和函数参数 java中: C/C++中: 四、指针数组 五、 二级指针 六、...

  • 指针的运算

    指针的运算 sizeof(char)=1,sizeof(int)=4 指针的计算 这些算术运算可以随指针做:给指针...

网友评论

      本文标题:第1周:指针与字符串——1.2 指针运算

      本文链接:https://www.haomeiwen.com/subject/vrdkqxtx.html