c++学习day3(字符串_指针)
1.字符串
1)三种形式
用双引号括起来的字符串常量:结尾会有一个'\0'字符,但该字符只占据字节数,不会使字符串长度增加。
存放于字符数组中,以'\0'字符结尾:数组元素个数应至少为字符串长度+1
string对象:
2)读取方法
scanf:读到空格结束
cin.getline(char buf[], int bufsize):读入一行,至多读入bufsize-1个字符,结尾自动添加'\0',注意回车换行符不会被读入
gets(char buf[]):库函数,读入一行,没有限制字符串长度,但有可能导致数组越界。结尾自动添加'\0',注意回车换行符不会被读入
3)头文件 cstring

2.指针
1)定义:比如 int * p 定义了指针p,p存放的是内存地址

2)指针的互相赋值:只能同类型的指针赋值,否则需要强制类型转换,但这样容易出问题。
比如 int * pn, char *pc; pn = (int *)pc;这样没有问题,但需要注意的是,由于pn是4个字节,而pc是1个字节。因此当往pn里存放内容超过1个字节时,可能会出错。
指向地址0的指针就是空指针,比如 int *p = NULL;
3)运算
同类型指针变量,可以对地址进行大小比较、相减/加(比如p1-p2 = (地址p1-地址p2)/sizeof(T),表示之间存储了多少了T类型的变量)
指针变量p+/-一个整数n的结果仍是指针,比如p+n = p + n*sizeof(T),还可以表示为p[n]
4)作用:指针用于访问内存空间。其实通过变量也可以访问内存空间,而使用指针则可以不通过变量,便能对内存进行操作。一般应用于底层功能,是区别于java/python的一个地方。
举例:访问int型变量a前面的那一个字节
int a;
char *p = (char *)&a;
--p;
注意这里是访问一个字节,根据指针运算规则,不能去定义一个int *型的指针。
5)数组名是一个指针常量,不能被赋值,就是说指针指向的地址不能改变。
6)指向指针的指针:T**p,定义指向 T*类型指针 的指针p,比如

7)strncpy 注意如果src的长度>=n,则只替换掉dest的前n个字符,若<n,则直接替换dest



8)void指针 void * p:可以用任何类型的指针对void指针进行赋值或初始化
注:1. 由于sizeof(void)没有定义,因此*p没有定义,p++等也没有定义
2. 应用举例:库函数memset:用于初始设置、数组拷贝


9)函数指针:函数名是该函数所占内存空间的起始地址,令一个指针变量指向该函数,就可以使用指针变量调用该函数。

c++学习day3(字符串_指针)的更多相关文章
- Redis源码学习:字符串
Redis源码学习:字符串 1.初识SDS 1.1 SDS定义 Redis定义了一个叫做sdshdr(SDS or simple dynamic string)的数据结构.SDS不仅用于 保存字符串, ...
- 从IL角度彻底理解回调_委托_指针
从IL角度彻底理解回调_委托_指针 目录 从IL角度彻底理解回调_委托_指针 1.创作此文的背景 1.1.委托能帮助代码更好地封装 1.2.委托能随时随地更方便地运行其他类中的方法 1.3.委托非常适 ...
- C/C++:提升_指针的指针和指针的引用
C/C++:提升_指针的指针和指针的引用 写在前面 今天在使用指针的时候我发现了一个自己的错误.
- C++_系列自学课程_第_9_课_C语言风格字符串_《C++ Primer 第四版》
前面说了写关于数组和指针的内容,这次在这里讨论一下字符串,讨论一下C语言风格的字符串. 在C语言里面我们利用字符数组来对字符串进行处理, 在C++里面我们前面说过一种类类型string可以对字符串进行 ...
- c#编程指南(十) 平台调用P-INVOKE完全掌握, 字符串和指针
可以说新手使用P-INVOKE最开始的头疼就是C#和C++的字符串传递,因为这里涉及到两个问题. 第一:C#的string和C++的字符串首指针如何对应. 第二:字符串还有ANSI和UNICODE(宽 ...
- iOS学习09C语言函数指针
本次主要学习和理解函数指针 1.函数指针 void printValue(int number) { printf("number = %d\n", number); } int ...
- iOS学习之C语言指针
访问数据的两种方式: 1.直接访问: 2.间接访问:先找到内存地址,根据地址访问存储单元.(内存地址 被称为指针) 定义指针变量: 类型修饰符 *指针变量名 = NULL; NULL表示空指针,相当 ...
- jquery中如何以逗号分割字符串_百度知道
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- C++第四篇--重载_指针_引用
C++第四篇--重载_指针_引用 1. 基础知识 重载:函数名相同,根据参数不同(类型.数量.顺序不同)调用同名函数 指针和引用:引用就是别名,引用时必须初始化,引用你定义的变量. int a; in ...
随机推荐
- Burrow 服务的安装部署
Burrow 服务的安装部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近协助开发的同时帮忙把10个topic的数据使用5个topic的来工作.结果发现数据flume在手机数 ...
- 7、JPA-映射-双向一对多
一个用户对应多个订单,多个订单对应一个用户,不管查哪一边都可以得到另一边的信息 实体类 Customer package com.jpa.yingshe; import javax.persisten ...
- netty的对象传输
pom <!-- https://mvnrepository.com/artifact/io.netty/netty-all --> <dependency> <grou ...
- SpringMVC+Shiro不拦截静态资源配置
最近在弄SpringMVC与Shiro整合,发现如果将DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题.如果DispatcherServlet改为拦截“/” ...
- 人工神经网络入门(4) —— AFORGE.NET简介
范例程序下载:http://files.cnblogs.com/gpcuster/ANN3.rar如果您有疑问,可以先参考 FAQ 如果您未找到满意的答案,可以在下面留言:) 0 目录人工神经网络入门 ...
- KMP算法的next[]数组通俗解释
原文:https://blog.csdn.net/yearn520/article/details/6729426 我们在一个母字符串中查找一个子字符串有很多方法.KMP是一种最常见的改进算法,它可以 ...
- 原生JavaScript运动功能系列(一):运动功能剖析与匀速运动实现
在我们日常生活中运动就是必不可少的部分,走路.跑步.打篮球等.在网页交互设计上运动也是必不可少的部分,创建的网站交互设计运动模块有轮播图,下拉菜单,还有各种炫酷的游戏效果都跟运动密切相关.所以很重要, ...
- adb server version (31) doesn't match this client (40); killing...
删除360的手机助手即可解决,进程名字360MoblieMgr.exe
- Chrome 浏览器快捷键
Ø 前言 记录下 Chrome 的快捷键,原文链接:http://www.cnblogs.com/mikalshao/archive/2010/11/03/1868568.html 1. 标 ...
- JS创建对象之构造函数模式
function Person(name, age, job) { this.name = name; this.age = age; this.job = job; this.sayName = f ...