c/c++ 数组和指针
c/c++ 数组和指针
知识点
1,数组就是指针,对应代码里的test1
2,用auto声明,得到的是指针,对应代码里的test2
3,用decltype声明,得到的不是指针 ,对应代码里的test3
4,用指针模拟end ,对应代码里的test4
5,标准库函数std::begin,std::end,对应代码里的test5
6,ptrdiff_t和size_t,ptrdiff是数组下标相加减的值的类型,size_t是数组下标的类型,对应代码里的test6
7,数组的下标可以是负值,标准库的string,vector的下标也可以是负值,对应代码里的test7
8,用数组初始化vector,注意生成的vector里的元素不包括第二个参数,对应代码里的test8
#include <iostream>
#include <vector>
using namespace std;
int main(){
//test1 数组就是指针
/*
string ar[] = {"aa","bb"};
string* p = ar;
*p = "cc";
string* p1 = &ar[1];
*p1 = "dd";
for(auto s : ar){
cout << s;
}
cout << endl;
*/
//test2 用auto声明,得到的是指针
/*
int ia[] = {1,2,3,5};
//ia1为整数指针
auto ia1(ia);
*ia1 = 9;
auto ia2(&ia[3]);
*ia2 = 8;
for(auto s : ia){
cout << s << ",";
}
cout << endl;
*/
//test3 用decltype声明,得到的不是指针
/*
int ia[3];
decltype(ia) ia3 = {2,3,4};
//ia3 = &ia[0];//编译错误
ia3[2] = 9;
for(auto s : ia3){
cout << s << ",";
}
cout << endl;
*/
//test4 用指针模拟end
/*
int arr[] = {0,1,2};
int* end = &arr[3];
for(int* beg = arr;beg != end; ++ beg){
cout << *beg;
}
cout << endl;
*/
//test5 标准库函数std::begin,std::end
/*
int arr[] = {0,1,2};
int* beg = std::begin(arr);
//int* end = &arr[3];
int* end = std::end(arr);
for(;beg != end; ++ beg){
cout << *beg;
}
cout << endl;
*/
//test6 ptrdiff_t和size_t
//ptrdiff是数组下标相加减的值的类型,size_t是数组下标的类型
/*
int arr[] = {1,2,3,4,5};
int* b = std::begin(arr);
int* e = std::end(arr);
ptrdiff_t juli = e - b - 1;
cout << juli << endl;
size_t sz = juli;
cout << arr[sz] << endl;
*/
//test7 数组的下标可以是负值,标准库的string,vector的下标也可以是负值
/*
int ia[] = {1,2,3,4,5};
int* p = &ia[2];
int j = p[1];//相当于*(p + 1),也就是ia[3]
cout << j << endl;
int k = p[-2];//相当于*(p - 2),也就是ia[0]
cout << k << endl;
string s("abcde");
char* p1 = &s[2];
cout << p1[-1] << endl;
vector<int> v{1,2,3,4};
int* p2 = &v[3];
cout << p2[-2] << endl;
*/
//test8 用数组初始化vector,注意生成的vector里的元素不包括第二个参数
/*
int ia[] = {0,1,2,3,4,5,6};
vector<int> v(std::begin(ia), std::end(ia));
for(auto s : v){
cout << s << ",";
}
cout << endl;
vector<int> v1(ia + 1, ia + 4);
for(auto s : v1){
cout << s << ",";
}
cout << endl;
*/
}
c/c++ 学习互助QQ群:877684258
本人微信:xiaoshitou5854
c/c++ 数组和指针的更多相关文章
- 把《c++ primer》读薄(4-2 c和c++的数组 和 指针初探)
督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1.我们知道,将一个数组赋给另一个数组,就是将一个数组的元素逐个赋值给另一数组的对应元素,相应的,将一个vector 赋给另 ...
- C语言核心之数组和指针详解
指针 相信大家对下面的代码不陌生: int i=2; int *p; p=&i;这是最简单的指针应用,也是最基本的用法.再来熟悉一下什么是指针:首先指针是一个变量,它保存的并不是平常的数据,而 ...
- 《征服 C 指针》摘录3:数组 与 指针
一.数组 和 指针 的微妙关系 数组 是指将固定个数.相同类型的变量排列起来的对象. 正如之前说明的那样,给指针加 N,指针前进“当前指针指向的变量类型的长度 X N”. 因此,给指向数组的某个元素的 ...
- C指针-数组和指针的归一
int bArr[] = {1,2,3}; int *iarr = bArr; *iarr = 6; printf("%d\n",*iarr); printf("%d\n ...
- 《C专家编程》第四章——令人震惊的事实:数组和指针并不相同
数组和指针是C语言里相当重要的两部分内容,也是新手程序员最容易搞混的两个地方,本章我们锁定指针与数组,探讨它们的异同点. 首先来看指针与数组在声明上的区别: int a[10]; int *p; 很明 ...
- (C语言)数组与指针的区别
以前常常听过这种说法,说数组和指针这两者比较像,但是不能混淆,可是一直没能理解.刚刚在李云的<专业嵌入式软件开发>中,看了讲述数组与指针区别的一章,似乎有所领悟.本着知乎上看到的这张图,我 ...
- C语言教学--二维数组和指针的理解
对于初学者对二维数组和指针的理解很模糊, 或者感觉很难理解, 其实我们和生活联系起来, 这一切都会变得清晰透彻. 我们用理解一维数组的思想来理解二维数组, 对于一维数组,每个箱子里存放的是具体的苹果, ...
- 【C语言学习】《C Primer Plus》第10章 数组和指针
学习总结 1.数组初始化方式: int a[]={1,2,3} int a[SIZE]={1,2,3} //SIZE是宏定义,数组初始化个数不能大于SIZE,否则报错:当个数小 //SIZE,自动补0 ...
- C语言学习004:数组与指针
在C语言中,字符串实际上就是字符数组,在内存中字符串"Shatner"存储的形式是这样的
- C语言--指向多维数组的指针和指针数组
#include <stdio.h> //void show(char *p[]); ]); int main(){ ][]={","abc","x ...
随机推荐
- Python异常处理详解
在shell脚本中,常用if来判断程序的某个部分是否可能会出错,并在if的分支中做出对应的处理,从而让程序更具健壮性.if判断是异常处理的一种方式,所有语言都通用.对于特性完整的编程语言来说,都有专门 ...
- 第一册:lesson sixty five.
原文: Not a baby. A:What are you going to do this evening Jill? B:I'm going to meet some friends, dad. ...
- asp.net core 2.1 配置管理
1. 直接读取配置 StartUp类中使用 Configuration["ConnectionString"], Configuration["AliyunAkSk:Ak ...
- ASPxGridView中Command列自定义按钮点击事件概要
其中CustomButtonClick="ButtonClick",e.buttonID可以获取到自定义按钮的id e.visibleIndex获取到行的索引 grdList.Ge ...
- Packet for query is too large (12238 > 1024). You can change this value
MySQL max_allowed_packet 设置过小导致记录写入失败 mysql根据配置文件会限制server接受的数据包大小. 有时候大的插入和更新会受max_allowed_packet 参 ...
- 升级ssh到OpenSSH_7.5p1
Redhat 6.5 x64升级SSH到OpenSSH_7.5p1 为了防止openssh安装失败导致不能远程登录,先部署telnet服务以防万一. rpm -qa telnet telnet-ser ...
- BurpSuite 各模块使用
Proxy 代理 对浏览器进行代理 对浏览器增加代理服务器 可以对http 请求进行监视 intercept is on 进行监控 off 不监控 可以任意修改 对任意的网络请求 进行爬虫 在 s ...
- vuex 、store、state (转载)
vuex 文档 https://vuex.vuejs.org/zh/guide/state.html
- IDEA设置显示中文文档API方法说明
首先,我们从网上下载好对应的java最新的中文api文档,chm格式的 chm其实相当于一个压缩包,里面有许多html文件 让IDEA显示中文文档,其实原理就是是让IDEA把java的api的对应ht ...
- (10)Microsoft office Word 2013版本操作入门_word表格
1.套用word模板 :点击[文件]---[新建]---选择合适模板创建即可. word中插入[书法字帖]: 2.插入表格 :点击[插入]---[表格]输入行和列 ,固定列宽为“自动”时 默认沾满左 ...