C++--学习笔记008

20150501

指针的赋值和使用

如果不给指针变量赋值,那么指针变量就是一个随机值,直接使用随机值很危险,所以使用指针之前必须对指针赋值

对指针变量赋值的语法是:

指针变量=内存地址

对指针变量进行赋值其实就是将指针变量指向一个内存地址,而这个内存地址就是这个指针要指向的数据。

与内存地址相关的运算符:“&”    “*”

“&”取地址运算符,把它放在一个变量前面,可以得到该变量在内存中存放的地址。

//定义一个整型变量

int N=703;

//取得整型变量的地址并将其赋值给整型指针

int* pN=&N;

通过&运算符可以取得N这个整型变量的内存地址,然后将其赋值给指针pN,也就是将指针pN指向N这个整数数据

"*"运算符执行的动作与“&”刚好相反

*是解析运算符,可以取得指针的内容

*pN=1983;//通过指针修改它所指向的数据

cout<<*pN<<endl;

符号“->”的作用

如果一个指针指向的是一个结构体类型的变量,剋直接使用->运算符访问这个结构体变量的成员变量

//定义一个结构体变量

Emplyee Jiawei;

//定义一个指针,并将其指向这个结构体变量

Emplyee* pJiawei=&Jiawei;

//用“->"运算符,访问这个结构体变量的成员变量

pJiawei->m_strName="Jiawei";

可以使用一个指针对另一个指针进行赋值

//定义一个整型变量

int a;

//取地址运算符”&“得到变量a的内存地址并赋值给指针pa

int* pa=&a;

//使用一个已经存在的指针对另外一个指针赋值

int* pb=pa;

pa和pb的值是相同的,都是变量a的地址

第四章

程序的两个目的:

描述数据和处理数据

第一步:用变量描述显示世界中的数据;

第二步:要对数据进行处理,最终解决问题。

用c++程序设计语言将我们头脑中对数据的处理表达出来。

表达式有运算符,操作数,标点符号3部分组成,表达式的作用是描述一个计算过程。

表达式的核心是操作数和运算符;

操作数包括常数,变量等数据量

()是标点符号,:是运算符

需要两个操作数的运算符称为二元运算符

需要3个操作数的运算符称为三元运算符

*乘,/除,%取两个数的余、

10%7;//对10除以7取余,表达式的值为3

自增++,又分为前置和后置

自减--,又分为前置和后置

int a =1;//声明整型变量啊,并给a赋初始值1

cout<<++a;//这个是前置,利用自增运算符对a加1,输出为2,这时a的值为2

cout<<a++;//这个是后置,接上面的语句,输出还是2,但是a的值为3,首先输出当前值,再进行自增运算。

经验:最好使用前置自增运算符代替后置自增运算符。

赋值运算符,

将表达式的运算结果保存下来。

最简单的赋值操作符是”=“

赋值操作符是一个二元运算符。作用是将右边表达式的值赋给等号左边的对象。

复合运算符

由算术运算符与赋值操作符复合的有:

+=,-=,*=,/=,%=

有位运算符与赋值操作符复合的有:

<<=,>>=,&=,^=,|=

复合运算符也是二元运算符

a +=1; //等价于表达式a=a+1;

a *=b+1;  //等价于表达式a=a*(b+1)

关系运算符

关系运算就是将两个操作数进行比较,得出一个结论。

关系运算符有:

<,<=,==,!=,>,>=

关系运算符是二元运算符。

关系运算符的作用是将两个操作数进行关系运算。

关系运算的结果类型是bool类型

如果两个操作数的关系符合运算符,则表达式的结果为true,反之为false

最佳实践:不要使用”==“比较两个浮点数是否相等。

如果确实要比较两个浮点数是否相等,就要设定一个误差值

float x=0.5;

double y=0.5;

//设定允许误差值

const double fEpsilon=0.000001;

if (fabs(cons(x)0cos(y))<fEpsilon)

cout<<"x等于y”<<endl;

else

cout<<"x不等于y“<<endl;

条件运算符

用来简化关系运算和条件判断。

条件运算符是c++提供的唯一一个3元运算符,需要3个操作数

条件运算符的语法结构:

条件判断表达式?true表达式:false表达式

可以根据条件判断表达式的值实现简单的条件选择功能

int max=(a>b)? a:b; //求a和b之间的较大值

如果a大于b,则将a作为表达式的最终结果赋值给max,反过来,将b赋值给max

逻辑运算符

逻辑运算符将关系运算的结果连接起来,构成复杂的逻辑表达式,完成复杂的逻辑判断。

逻辑非,计算操作数的逻辑非 !

逻辑与,计算两个操作数的逻辑与&&

逻辑或,计算两个操作数的逻辑或 ||

!是一元运算符,只能放在操作数的前面

bool bFlag=true;

!bFlag;

&&和||都是二元运算符

&&两个都为true,才是true

||其中一个true就是true

时间: 2024-10-12 14:48:02

C++--学习笔记008的相关文章

Mysql学习笔记008

获得数据库和表的信息 一般正常的程序员或DBA都会在敲代码的时候突然想到这样的一系列问题:我是谁?我在哪?我在干什么? 我的数据库呢?我的表呢?我表怎么创建的?我该怎么办呢?你可能会想到SHOW DATABASES; 命令.But, 这个命令是列出由mysql管理的databases. 不是知道我再哪的命令.到底哪个命令是呢? 我左某人在翻阅上古的典籍的时候查到这样的一个命令: SELECT DATABASE(); mysql> SELECT DATABASE();+------------+|

【原】Java学习笔记008 - 方法(函数)

1 package cn.temptation; 2 3 public class Sample01 { 4 public static void main(String[] args) { 5 // 方法/函数 Method/Function 6 7 // 为什么会出现方法? 8 // 原因1.在程序中多处出现相同的语句内容 9 // 原因2.会发生变化 10 11 // [只有变化是不变的] 12 // 回顾一下变量,为了应对变化,提出的新的机制 13 // 需要对变化进行封装处理,在这里就

网上图书商城项目学习笔记-008修改密码功能

一.修改密码流程分析 二.代码 1.view层 1)pwd.jsp 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 4 5 <!DOCTYPE HT

【OpenCV学习笔记 008】基于形态学运算的图像变换

一.形态学滤波对图像进行腐蚀.膨胀运算 1.概念及原理 (1)腐蚀和膨胀是形态学中最基本的运算,而结构元素又是数学形态学中最基本的工具.结构元素可以简单理解为像素的结构以及一个原点.使用形态学滤波就是对像素的每个元素应用这个结构,当结构元素的原点和像素对齐时,它与图像的相交部分定义了一组进行形态学运算的像素.结构元素可以是任何形状,我们一般使用简单的方形.圆形.或菱形,原点即位于中心位置. (2)腐蚀替换当前像素位像素集合中找到的最小像素值,膨胀则相反.为了想象出两个运算的效果,可以考虑背景(黑

IOS开发学习笔记008

预处理 1.宏定义 2.条件编译 3.文件包含 注意: 1.所有预处理都是以#开头,并且结尾不用分号. 2.宏名一般用大写字母,以便与变量名区别开来,但用小写也没有语法错误 3.作用域也是从定义到代码块结束 4.定义一个宏时可以引用已经定义的宏名 5.在编译预处理用字符串替换宏名时,不作语法检查,只是简单的字符串替换.只有在编译的时候才对已经展开宏名的源程序进行语法检查 一.宏定义 1.不带参数的宏定义 #define 宏名 字符串 #define COUNT 6 2.带参数的宏定义 #defi

MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

首先需要回顾一下上一篇文章中的内容:MySQL数据库学习笔记(九)----JDBC的PreparedStatement接口重构增删改查 一.JDBC事务处理: 我们已经知道,事务的概念即:所有的操作要么同时成功,要么同时失败.在MySQL中提供了Commit.Rollback命令进行事务的提交与回滚.实际上在JDBC中也存在事务处理,如果要想进行事务处理的话,则必须按照以下的步骤完成. JDBC中事务处理的步骤: 1.要取消掉JDBC的自动提交:void setAutoCommit(boolea

Web前端学习笔记(001)

....编号    ........类别    ............条目  ................明细....................时间 一.Web前端学习笔记                                    2016年6月15日10:38:53    /****************************************************************begin******************************

vector 学习笔记

vector 使用练习: /**************************************** * File Name: vector.cpp * Author: sky0917 * Created Time: 2014年04月27日 11:07:33 ****************************************/ #include <iostream> #include <vector> using namespace std; int main

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu