C指针决心 ------ 指针表达式
本文是自己学习所做笔记。欢迎转载。但请注明出处:http://blog.csdn.net/jesson20121020
所谓的指针表达式是指一个表达式。其结果是一个指针。
例1.
int a,b;
int array[20];
int *p;
p = &a; //&a 就是一个指针表达式,由于&a的结果就是一个指针。
int **q = &p; //&p也是一个指针表达式。
*q = &b; //*p和&b都是一个指针表达式。
p = array;
p++; //同理,这也就是指针表达式。
例2.
char *arr[10];
char **parr = arr; //arr能够看做是一个指针。代表数组的首地址,这样,arr也是一个指针表达式。
char *s;
s = *parr; //非常easy看出*parr也是一个指针表达式。
s = *(parr+2); //同理,*(parr+2)是一个指针表达式。
由于,指针表达式的结果是一个指针,所以指针表达式也满足指针的四个要素。即,指针的类型。指针所指向的类型,指针的值或指针所指向的内存地址,以及指针自身占领的内存。
另外,须要注意。当一个指针表达式的结果指针已经明白地具有指针自身占领的内存的话,那么这个指针表达式就是一个左值。能够进行自加,自减等操作。否则的话。这个指针表达式就不是一个左值。如例1中的&a就不是一个左值,由于没该表达式的结果指针也就是a的地址并没有占领内存,所以不是一个左值,当然不能进行自加等操作了,但*q就是一个左值。由于在定义时。已经给指针q分配空间了。
版权声明:本文博客原创文章。博客,未经同意,不得转载。
C指针决心 ------ 指针表达式的更多相关文章
- C指针决心 ------ 指针的概念和元素
本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 指针在C语言中的地位,不用多说. 指针的概念 指针是一个特殊的变量,它里面存储 ...
- 理清C++常量指针和指针常量这团乱麻
写在前面: 与其说C++中的常量指针和指针常量是一块很有嚼头的语法糖,不如说它是一块相当难啃的骨头.其实本来没什么,这无非是const int *p与int* const p的区别, 但一涉及到起名字 ...
- 指针的指针&指向指针数组的指针
一.指针的指针 指针的指针看上去有些令人费解.它们的声明有两个星号.例如: char ** cp; 如果有三个星号,那就是指针的指针的指针,四个星号就是指针的指针的指针的指针 ...
- 娓娓道来c指针 (3)指针和数组
(3)指针和数组 在c中指针和数组似乎有着千丝万缕的关系.事实上它们不是一回事:指针是指针,数组是数组.两者不同样. 说它们有关系,只是是由于常见这种代码: int main() { int arra ...
- C语言的本质(13)——指向指针的指针
指针可以指向基本类型,也可以指向复合类型,因此一个指针变量存放的可以是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量.由于指针变量直接指向变量,所以称为"单级间址".而 ...
- 承诺c指针 (1)指针是地址
(1)是地址 首先明白一个观点:指针就是地址.这是理解指针的起始一步. 直观感受下.变量的地址 int main() { int foo; int *foo_p; foo = 5; foo_p = & ...
- C的函数指针与指针函数
1.函数指针 指向函数的指针.本质是一个指针. 指针变量可以指向变量的地址.数组.字符串.动态分配地址,同时也可指向一个函数,每个函数在编译的时候,系统会分配给该函数一个入口地址,函数名表示这个入口地 ...
- 指向函数的指针 ------ 函数指针(function pointer)
函数指针: 指向函数的指针, 首先是一个指针, 这个指针指向一个函数. 函数具有可赋值给指针的物理内存地址,一个函数的函数名就是一个指针,它指向函数的代码.一个函数的地址是该函数的进入点,也是调用函数 ...
- 数组指针与指针数组(good)
数组指针和指针数组的区别 数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p ...
随机推荐
- mongoDB 批量更改数据,某个字段值等于另一个字段值
由于mongodb数据库类似js的写法,所以即使数据库中新的列不存在也会自动创建 db.hospital.find().forEach( function(item){ db.hospital.upd ...
- ecshop 浏览历史样式的修改
ecshop的浏览历史的样式,例如我修改的是只让浏览历史显示浏览历史的商品名称 而不显示浏览历史的商品的价格和图片 首先找到要修改 的文件includes\lib_insert.php 找到函数fun ...
- adt-bundle-windows-x86_32-20140702
adt-bundle-windows-x86_32-20140702 Windows > Preference,在Android里没有NDK选项 法一:help->install new ...
- C++传递函数指针
函数指针是一个很好的类型.因此,您可以编写一个函数,它的一个参数是一个函数指针.然后.在(外部)当函数使用的函数指针参数,来间接调用时调用相应的参数的函数的函数. 因为指针在不同的情况下能够指向不同的 ...
- Java重命名文件
File file = new File("D:\\aa\a.txt"); file.renameTo(new File("D:\\aa\\b.txt" ...
- Linux/Unix使用valgrind内存泄漏检测
c\c++程序设计.内存管理是一个比较头疼的问题.相信它会导致内存泄漏.除了外部养成良好的编程习惯(使用智能指针),使用该工具还可以帮助检测内存泄漏,valgrind这是Unix\Linux在一个很好 ...
- Nutch+Lucene搜索引擎开发实践
网络拓扑 图 1 网络拓扑图 安装Java JDK 首先查看系统是否已经安装了其它版本号的JDK,假设有,先要把其它版本号的JDK卸载. 用root用户登录系统. # rpm-qa|grep gcj ...
- dbus 和 policykit 实例篇(python) ()转
使用policykit 的程序一般都有一个dbus daemon程序来完成相关操作,这个dbus daemon 会在系统注册一个system bus 服务名,用于响应要求root privileged ...
- JSP简单的练习-用户登记表
<%@ page language="java" import="java.util.*" pageEncoding="gb2312" ...
- 02、Unicode 汉子转码小工具
原文:02.Unicode 汉子转码小工具 在做 Windows app 的时候,与服务器端交互使用的是 json 格式的数据,里面的汉字内容被 编码成 unicode 格式,在调试的时候不太方便,就 ...