栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++ 指针,数组

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++ 指针,数组

指针

对类型T, T*就是"保存T的地址"类型(也就是指向T类型的指针).也就是一个类型为T*的变量能保存一个类型T的对象的地址. 比如:

  int* pi; //指向int的指针
  char** ppc;//指向char的指针的指针
  int* ap[15];//15个指向int的指针的数组
  int (*fp)(char*);//指向函数的指针,这个函数参数是char*,返回一个int
  int* f(char*);//函数f的参数是char*, 返回一个int*

对指针的基本操作是间接访问,也就是说(访问被指针所指向的那个对象)这个操作也被称作间接.间接运算符是(前缀的)一元*. 比如:

char c = 'a';
char* pc = &c;
char c2 = *pc;

零(0)是一个整数.由于各种标准转换,0可以被用作任意整型,浮点型,指针,还有指向成员的指针的常量.所以0的类型由上下文来决定.

数组

对于类型T, T[size]就是"具由size个T类型的元素的数组"类型.这些元素的下标从0到size-1.

另外多维数组表示为数组的数组.

  float v[3];//数组v, 包含3个浮点数, v[0], v[1], [2]
  char* pc[3];//数组pc, 包含3个char*指针, pc[0], pc[1], pc[2]
  int d2[3][3];//数组d2, 包含3个数组,每个数组包含3个int

数组的初始化
  int v1[] = {1, 2, 3};//不需要指定数值的数量, 因为后面的初始化明确了有3个int
  int v2[] = {};//错误, 不知道v2有几个元素
  int v3[3] = {1, 2};//可以, 缺的用0填充
  int v4[3] = {1, 2, 3, 4};//不行, 越界了
  int v5[] = v1;//错误, 数组间不能赋值

字符串文字量

字符串文字量是用双引号括起来的字符序列

"this is a string"

一个字符串文字量里包含的字符个数比它看起来的字符数多一个,它总由一个空字符''结束.

sizeof("Boss") == 5

字符串文字量的类型是"若干个数的const字符的数组", 所以"Boss"的类型就是const char[5](因为后面还有个空字符'')

但是你可能会奇怪为什么你用字符串文字量赋值给一个char*, 这是因为以前c和c++定义中, 字符串文字量的类型就是char*, 为了保证以前的程序也能在新的c++中运行, 编译器会做一些转化.

转义字符, 为了在字符串常量里能表示" , ' 之类的字符, c++提供了转义符

如'n'代表换行符, ' ' '代表字符'

在字符串里不能真正的换行

  char string = "adadadada
      adadadadad ";//错误

  char string1 =
       "adadadadadadad"
       "adadadadada";//正确

指针指向数组
  int v[] = {1, 2, 3};

  int* p1 = v;//指向数组的第一个元素(隐式转换)
  int* p2 = &v[1];//指向数组的第二个元素

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/384414.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号