<c和指针>学习笔记3之操作符,表达式与指针
1 操作符
(1)移位操作符
左移<<:值最左边的几位丢弃,右边多出来的几个空位用0补齐
01101101
011(丢弃)01101000(后面三位补0)
右移>>:
算术左移和逻辑左移只有操作数是负值的时候才不一样。算术移位,左边移入的位由原先该值的符号位决定,符号位为1则移入的位均位1,符号为0则移入的位均为0,因为这样可以保证原来数的正负不变。
10010110右移2位,逻辑移位为00100101,算术移位11100101
案例1:
//计算1的位的个数
int count_one_bits(unsigned value)
{
int ones;
for(ones=;values!-;value=value>>)
{
if(value%!=)
{
ones=ones+;
}
}
return ones;
}
(2)赋值
赋值操作符的结合性是从右到左,也就是
a=x=y=3<==>a=(x=y=3)
(3)单目运算符
sizeof是运算符,用来求操作数的类型长度,单位位字节。
前++ 表达式的值是操作数增加后的值
后++ 表达式的值是操作数增加前的值
a = b=10
c=++a// a增加到了11 c等于11
d=b++ //b增加到了11 d仍然为10
(4)逻辑操作符(&& ||)
位操作符和逻辑操作符很容易混淆,逻辑操作符具有短路效应,意思是如果有两个条件,前面条件一旦满足,后面就直接不看了,它是用于测试零值和非零值。而位操作符是比较对应的位。
a=1 b=2
if(a&&b)为真
if(a&b)为假
(5)条件操作符
expre1?expre2:expre3
首先计算expre1,如果为真,那么整个表达式值为expre2,不会去执行expre3.如果expre1为假,那么整个表达式的值为expre3,不会求expre2.
(6)逗号操作符
表达式从左到右逐个求值,整个逗号表达式的值是最后那个表达式的值。
2 指针
(1)内存和地址
主要是知道这两件事:
内存中的每个位置由一个独一无二的地址标识
内存中的每个位置都包含一个值
(2) 指针 间接访问和变量
*&a=25=====》把25赋值给a
&操作符产生变量a的地址,指针常量,接着*访问其操作数所表示的地址
(3)指针的指针
int a =10;
int *b=&a;
c=&b;那么c的类型是什么,怎么声明
int **c;相当于int *(*c) *操作符是从右向左结合
(4)指针表达式
char ch='a';
char *cp=&ch;
*cp+1----->'b' *的优先级高于+
*(cp+1)----->ch后面的一个字符,再取值,理论上可以作为右值和左值,但是此处没有定义ch后面是什么。
*cp++----->后缀++优先级高于*
++*cp----->通常可用于数组的遍历 先取得cp的值然后往后移动
(*cp)++---->首先执行间接操作,结果是ch增值前的原先值
++*cp++----->从右往左结合,首先++cp,然后对这个值进行间接操作,然后执行++
<c和指针>学习笔记3之操作符,表达式与指针的更多相关文章
- C++中的智能指针、轻量级指针、强弱指针学习笔记
一.智能指针学习总结 1.一个非const引用无法指向一个临时变量,但是const引用是可以的! 2.C++中的delete和C中的free()类似,delete NULL不会报"doubl ...
- python3.4学习笔记(十) 常用操作符,条件分支和循环实例
python3.4学习笔记(十) 常用操作符,条件分支和循环实例 #Pyhon常用操作符 c = d = 10 d /= 8 #3.x真正的除法 print(d) #1.25 c //= 8 #用两个 ...
- matlab学习笔记10_2 一般操作符
一起来学matlab-matlab学习笔记10 10_2一般操作符和数据显示格式 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德 ...
- C++指针学习笔记
本文参考http://www.prglab.com/cms/pages/c-tutorial/advanced-data/pointers.php 1.存储其它变量地址的变量(如下面例子中的addre ...
- C++ Primer 学习笔记_60_重载操作符与转换 --赋值、下标、成员訪问操作符
重载操作符与转换 --赋值.下标.成员訪问操作符 一.赋值操作符 类赋值操作符接受类类型形參,通常该形參是对类类型的const引用,但也能够是类类型或对类类型的非const引用.假设未定义这个操作符, ...
- C++ Primer 学习笔记_57_类和数据抽象 --管理指针成员
复印控制 --管理指针成员 引言: 包括指针的类须要特别注意复制控制.原因是复制指针时.一个带指针成员的指针类 class HasPtr { public: HasPtr(int *p,int i): ...
- 深入理解C指针----学习笔记
深入理解C指针 第1章 认识指针 理解指针的关键在于理解C程序如何管理内存,指针包含的就是内存地址. 1.1 指针和内存 C程序在编译后,以三种方式使用内存: 1. 静态. ...
- C语言学习笔记 (002) - C++中引用和指针的区别(转载)
下面用通俗易懂的话来概述一下: 指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const.volatile等等.见下图 ...
- C Primer Plus学习笔记(九)- 数组和指针
数组 数组由数据类型相同的同一系列元素组成 需要使用数组时,通过声明数组告诉编译器数组中内含多少元素和这些元素的类型 普通变量可以使用的类型,数组元素都可以用 float candy[365]; // ...
随机推荐
- 在嵌入式、海思、ARM中进行统一的音频AAC编码的必要性
前言 最近来到深圳,跟许多做硬件的小伙伴聊安防.聊互联网.聊技术,受益颇多,其中聊到一点,大家一直都在想,互联网发展如此迅猛,为啥大部分的摄像机还是采用的传统G.726/G.711的音频编码格式呢,如 ...
- poj 3071 Football <DP>
链接:http://poj.org/problem?id=3071 题意: 有 2^n 支足球队,编号 1~2^n,现在给出每支球队打败其他球队的概率,问哪只球队取得冠军的概率最大? 思路: 设dp[ ...
- Delphi String的散漫记录,真是知识无数,陷阱无数
真是膜拜Delphi C++ Builder编译器的作者们,要下多少苦功夫才能解决如此之多的问题,制造出一个神级作品给世人享用.另外以我的编程经验所能想到很麻烦但却是必须的还有两个地方,一个是Form ...
- 【题解】 P1092虫食算
[题解]P1092 虫食算 老题了,很经典. 用到了一些搜索套路. 可行性剪枝,劣者靠后,随机化,\(etc......\) 搜索设参也很有技巧,设一个\(adjustment\)参数可以很方便地在两 ...
- ABap-小技巧
if FIELD cn '0123456789'. *&如果字符串包含‘数字’ STOP. endif. 同理到字母‘ABCDEFG*’ 'abcdefg*' '/' '\' 等其它字 ...
- 超限学习机 (Extreme Learning Machine, ELM) 学习笔记 (一)
1. ELM 是什么 ELM的个人理解: 单隐层的前馈人工神经网络,特别之处在于训练权值的算法: 在单隐层的前馈神经网络中,输入层到隐藏层的权值根据某种分布随机赋予,当我们有了输入层到隐藏层的权值之后 ...
- ubuntu 更新软件命令
安装软件最好加权限(sudo) --default-timeout=100 设置超时时间100秒 install -U setuptools 表示更新安装setuptools sudo pip3 -- ...
- leetcode 890. Possible Bipartition
Given a set of N people (numbered 1, 2, ..., N), we would like to split everyone into two groups of ...
- zkeacms源码解读一
1,app.UseZKEACMS 中注册可识别的路由 其中 CMS_Redirection 表中填写了跳转路由 对应的UrlRedirectService中将会读取所有的跳转规则. 有两个路由规则很 ...
- IE不支持HTML5表单属性placeholder的解决办法
1. [代码][JavaScript]代码 (function ($) { $.fn.placeholder = function (options) { var defaults ...