NULL:

对所有指针变量进行显式的初始化是种好事:(1)如果你知道指针将被初始化为什么地址,就直接初始化该地址,

(2)否则把它初始化位NULL.

注意:假定变量a存储于位置100.

× =

看上去像是把25赋值给a,因为a是位置100所存储的变量。但这是错误的,这条语句是非法的。因为字面值100的类型是整形,而间接访问操作只能作用于指针类型表达式。

正确:

×(int ×) =

强制类型转换把值100从“整形”转换为“指向整形的指针”

这种技巧运行之处:你偶尔需要通过地址访问内存中某个特定的位置。

前缀++:先增加它的操作数的值再返回这个结果。

后缀++:先返回cp值的一份copy,然后再增加cp的值。

易错点:

char ch = 'a'
char *cp = &ch;
此时的×cp++代表什么????

结果是:它的右值和左值分别是变量ch的值和ch的内存位置,也就是cp原先所指。

定人误解的地方:后缀++操作符的优先级高于*操作符。但表达式结果看上去是像先执行间接访问操作。

实际:这里有三个步骤

(1)++操作符产生cp的一份拷贝

(2)然后++操作符增加cp的值

(3)最后在cp的拷贝上执行间接访问操作。

*cp++:这个表达式常常在循环中出现,首先用一个数组的地址初始化指针,然后使用这种表达式就可以依次访问该数组的内容了。

#include <stdio.h>
#include <stdlib.h>
size_t strlen_test(char *string)
{
int length = ; while(*string++ != '\0')
length += ;
return length;
} int main(void)
{
int rec= ;
char *m_string = "I am liuxj";
rec = strlen_test(m_string); printf("rec is %d\n", rec); }

C语言中存储一个字符串:

(1):字符指针

(2):使用字符数组

const char *str = "hello";
const char str[] = "hello";

两个指针相减前提:两个指针指向同一个数组中的元素)的结果:是两个指针在内存中的距离(以数组元素的长度位单位,而不是以字节位单位),因为减法运算的结果将除以数组元素类型的长度。

两个指针的关系运算: <, <=, >, >=

比较将会告诉你,哪个指针指向数组中更前或更后的元素。

C的指针疑惑:C和指针6(指针)的更多相关文章

  1. c语言指针疑惑[转载]

    c99的动态数组是在栈上面开辟的,而new出来的是在堆上面开辟的.栈和堆的地址是从两端相向增长的.栈很小,一般只有几十k,vc6好像是64k.堆很大,在win32的虚拟地址空间可以分配到2g的内存.栈 ...

  2. 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, const 对象的引用

    [源码下载] 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象,  const 指针和指向 const 对象的指针, con ...

  3. Java中到底有没有指针;同时注意引用和指针的区别

    Java中引用的作用类似于指针,但是有区别:()    (1) 指针必然指向一个内存地址,如果你定义的时候不指定,就会乱指(很可能造成安全隐患)但是引用定义出来后默认指向为空.     (2) 指针可 ...

  4. [转] C++指针加整数、两个指针相减的问题

    http://blog.csdn.net/onlyou930/article/details/6725051 说来惭愧,写C++有一段时间了.这个问题从来没有认真考虑过,此次标记于此: 考虑如下问题: ...

  5. c++中多态性、dynamic_cast、父类指针、父类对象、子类指针、子类对象

    c++多态性是依靠虚函数和父类指针指向子类对象来实现的.简单来说,父类中定义虚函数,父类指针指向子类对象,父类指针调用函数时调用的就是子类的函数. 父类没有定义虚函数,父类指针指向子类对象时,父类指针 ...

  6. Android系统智能指针的设计思路(轻量级指针、强指针、弱指针)

    本博客为原创,转载请注明出处,谢谢. 参考博文:Android系统的智能指针(轻量级指针.强指针和弱指针)的实现原理分析 C++中最容易出错的地方莫过于指针了,指针问题主要有两类,一是内存泄露,二是无 ...

  7. 在删除一个指针之后,一定将该指针设置成空指针(即在delete *p之后一定要加上: p=NULL)

    在删除一个指针之后,一定将该指针设置成空指针(即在delete *p之后一定要加上: p=NULL)

  8. C++二维数组、指针、对象数组、对象指针

    项目中用到,随手记一下: 1.二维数组.与指针 创建二维数组指针的方式: a.已知一维的大小 1 int **array=new int *[rows]; 2 (for int i=0;i<ro ...

  9. [C++]数组指针,数组引用,函数指针

    数组指针是指一个指向数组的指针,例如有一个数组指针p指向一个数组a[],则 *p是取到这个数组,也就是说 *p=a,因此 **p =a[0], 它的定义为: ]; ]=&a; (*c)表示它是 ...

  10. C和C指针小记(十七)-使用结构和指针-链表

    1.链表 链表(linked list)即使是一些包含数据的独立数据结构的(Node)集合. 链表中的每个节点通过链或指针链接在一起. 程序通过指针访问链表中的节点. 节点通常是动态分配的,但也有由节 ...

随机推荐

  1. html5shiv.js分析-读源码之javascript系列

    xiaolingzi 发表于 2012-05-31 23:42:29 首先,我们先了解一下html5shiv.js是什么. html5shiv.js是一套实现让ie低版本等浏览器支持html5标签的解 ...

  2. 数论 - 119. Magic Pairs

    Magic Pairs Problem's Link Mean: 已知N.A0.B0,对于给定X.Y,若A0X+B0Y能被N整除,则AX+BY也能被N整除,求所有的A.B.(0<=A.B< ...

  3. Thinkphp3.2 PHPMailer 发送 QQ邮箱 163邮箱

    在进入正题这前先看下网易(163)邮箱的服务器地址和端口号 类型 服务器名称 服务器地址 SSL协议端口号 非SSL协议端口号 收件服务器 POP pop.163.com 995 110 收件服务器 ...

  4. 007Maven_在Myeclipse创建web项目

    创建Web项目 l  选择创建一个普通的web工程

  5. Kivy: 用于NUI开发的跨平台Python框架

    http://top.jobbole.com/9915/ http://kivy.org/

  6. django 模型中的计算字段

    models.py class Person(models.Model): family_name= models.CharField(max_length=20, verbose_name='姓') ...

  7. iOS文件路径相关的方法

    文件路径相关的方法在NSPathUtilities中,主要是操作路径 获得一个路径 NSString *documents = [NSSearchPathForDirectoriesInDomains ...

  8. &lt; APT 攻击&gt;看起来是 .PPT 附件,竟是 .SCR !!

    趋势科技以前在2013年下半年度目标攻击综合报告里指出,发现了好几起APT攻击-高级持续性渗透攻击 (Advanced Persistent Threat, APT) /目标攻击相关的攻击活动. 趋势 ...

  9. ionic listview对象的编辑、排序和删除

    1)ionic的listview对象即<ion-list></ion-list> 2)添加并显示编辑按钮(添加其他自定义按钮也一样) can-swipe属性设置为true(默认 ...

  10. js 中 this 的指向问题

    高程上的大前提: 1.this 对象是在运行时基于函数的执行环境绑定的:在全局函数中,this 等于window,而当函数被作为某个对象的方法调用时,this 等于那个对象:不过,匿名函数的执行环境具 ...