C++ 数组 技术教程文章

小猪猪逆袭成博士之C++基础篇(四)数组、指针、vector、迭代器【图】

小猪猪逆袭成博士之C++基础篇(四)关键词:数组,Vector。 一、数组与指针数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据。例如:int a[10],意思就是从a开始有10个连续的int大小的空间。我们还是从初始化说起。我们以数据类型int为例,当然也可由有很多的数据类型,可以是像int,double这种,也可以是自定义的类,一般的初始化方法有:int a[10];int a[10]={0};int a[3]={0,1,2};在前面的文章...

C++字符串指针与字符数组的区别【代码】

今天发现这样一个问题#include <iostream> usingnamespace std; int main() { char ch1[10];strcpy_s(ch1,"123456");//编译通过char* p = newchar[10];strcpy_s(p,"123456");//报错:不接受2个参数 }改成如下所示就没有问题:strcpy_s(p,10,"123456");//编译通过为什么会这样呢?先看下字符数组与字符串指针的区别:1.由双引号括起来的字符串常量属于静态存储类型,它被存储在内存的静态存储区内,所以无论字符串常量出现在程序的什...

c++中的array数组和vector数组【代码】

我觉得实验一下会记得比较牢,话不多直接上代码。下面是array数组,感觉用的不多。//cpp 风格数组 array #include <iostream> #include <array> #include <vector>usingnamespace std;int main() {array<int , 6> myint = {1 , 2 , 34, 45 , 0 , -2};for(int i = 0 ; i < myint.size() ; i++) //size 获取长度,vector也是这样获取长度的cout << myint[i] <<"" << (void *)&myint[i] << endl;array<int , 5> a1 = {1 , 2 ,3 ,4 ...

温故而知新 C++ 数组与指针【代码】【图】

#include <stdio.h>usingnamespace std;int main(int argc, _TCHAR* argv[]) {int a[5];int b[4] = {1,2,3,4};char c[] = "1234";int *d= newint[4];*d = 1;*(d+1) = 2;*(d+2) = 3;*(d+3) = 4;printf("a length = %d\n",sizeof(a));printf("b length = %d\n",sizeof(b));printf("c length = %d\n",sizeof(c));printf("d length = %d\n",sizeof(d));delete d;d = nullptr;system("pause");return0; }数组的初始化方式,可以用以上几...

c++中的字符串数组【代码】

1. 使用指针:因为是字面值,不可以修改,一般加个const,数组大小可以不指定;constchar *colour[4] = { "Blue", "Red", "Orange", "Yellow" }; 2. 使用二维数组:适用于当所有字符串长已知时,串可以修改,第二维大小必须给出;char colour[4][10] = { "Blue", "Red", "Orange", "Yellow" }; 3. 使用string类:串的大小不固定,串可以修改; std::string colour[4] = { "Blue", "Red","Orange", "Yellow" }; 4. 使用动态数组:ve...

C++ 从函数返回数组【代码】

C++ 不允许返回一个完整的数组作为函数的参数。但是,您可以通过指定不带索引的数组名来返回一个指向数组的指针。如果您想要从函数返回一个一维数组,您必须声明一个返回指针的函数,如下:int * myFunction() { . . . }另外,C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。现在,让我们来看下面的函数,它会生成 10 个随机数,并使用数组来返回它们,具体如下:#include <iostream> #include <cstdlib>...

C++入门经典-例6.11-使用指针变量遍历二维数组【代码】【图】

1:代码如下:// 6.11.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <iomanip> usingnamespace std; void main() {int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int *p;p=a[0];for(int i=0;i<sizeof(a)/sizeof(int);i++){cout << "address:";cout << a[i] ;//在二维数组中a[i]代表每个元素的地址cout << " is " ;cout << *p++ << endl;} } /*sizeof:其作用就是返回一个对象或者类型所占的...

71. C++ 分别用指针数组和二维数组生成二维空间,存储数据并释放。 练习new/delete, new[]/delete[]【代码】【图】

分别用指针数组和二维数组生成二维空间,存储数据并释放。比如,数据如下: //使用了下fgetc() 1 #include <iostream>2 #include <stdio.h>3usingnamespace std;4 5 6int main()7{8#if 0 //生成二维数组存储 9 FILE* fp = fopen("G:\\qtcode\\temp.txt","r"); 1011//char buf[3][10] ={0};12char (*buf)[10] = newchar[3][10]; 1314int i,j,ch; 15for(i = 0;i<3;i++) 16 { 17for(j = 0;j<8;j++) 18 { 19 ...

内排序—数组实现(c++)【代码】

1 参考资料:数据结构与算法分析(第三版)(c++) 2 http://blog.csdn.net/theprinceofelf/article/details/6672677 3 4 5 6 7 内排序,均采用数组实现,数组有较多的局限性,这些实现是为了去了解排序算法 8的操作流程 9 10 #include<iostream> 11usingnamespace std; 12 13void Swap(int &a,int &b); 14void Print(int *array,int n); 15void BubbleSort(int *array,int n); 16void InsertSort(in...

【C/C++学院】0726-cppIDE/一级指针/指针数组/函数指针/函数指针数组/二级指针

【送给在路上的程序员】对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现。对于一个架构师而言,掌握各种语言的优势并可以运用到系统中,由此简化系统的开发,是其架构生涯的第一步。对于一个开发团队而言,能在短期内开发出用户满意的软件系统是起核心竞争力的体现。每一个程序员都不能固步自封,要多接触新的行业,新的技术领域,突破自我。cppIDE使用mfc和codeblocks中的mingw编译器。执行system命令中...

C++学习 - 数组指针/指针数组【代码】

虽然我一直知道它们两个的区别,但是分不清名字应该是叫哪个。 这里区别一下。指针数组( array of pointers )顾名思义:这是个数组,数组里面的元素都是指针。int*arr[10];这个等同于 int *(a[4])因为*的优先级比较低,所以没有括号的时候,是arr和[10]先结合,变成一个数组,然后这个数组的元素是整型指针。初始化这个初始化要按照数组的方式来。for ( int i = 0; i < 10; i++){a[i] = (int *)malloc( 5 * sizeof(int) ); }这样就...

C++--------------------------------指针和数组替换使用原因【代码】

马上要考试了,复习数据结构中,对C的指针不太了解,在严蔚敏《数据结构(C语言版)》中,发现p22定义顺序存储结构:typedef srtuct{ElemType *elem; //存储空间基址int length; //当前长度int listsize; //当前分配的存储容量 }SqList;顿时蒙蔽,为何定义的指针在后面能 L.elem[i] 这样的调用.....这不是数组的访问形式么?于是谷歌:    数组a[i]在编译的时候会被编译器复原成*(a+i),其中a是数组名,也是数组的...

C++实验5-数组分离【图】

一、问题及代码/* * 文件名称:从键盘中输入十个数放在数组A中,将该数组中的奇数放在数组B中,偶数放在数组C中分别输出 * 作 者:邹棚辉 * 完成日期:2016年5月8日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分: * 输入描述: * 问题描述: * 程序输出: * 问题分析: * 算法设计: */ #include<iostream> using namespace std; int main() {const int N=10;int a[N],i=0,j=0,k=0;cout<<"请输入十个数:"...

C++中数组求偏移量计算公式

已知数组:type A[10][5]A[0][0] --A[8][4]面试常考:数组定义A[0....x][0...y]已知A[m][n] --求A[k][l]的地址: &A[m][n]+( (k-m)*x +(l-n) )*sizeof(type) 其中x为列数末地址 = 初始地址+( (行2-行1)*列数+(列2-列1) )*每个元素的大小原文:http://www.cnblogs.com/ttss/p/4148708.html

【转】c++ 如何批量初始化数组 fill和fill_n函数的应用【代码】

http://blog.csdn.net/sunquana/article/details/9153213一、 fill和fill_n函数的应用: fill函数的作用是:将一个区间的元素都赋予val值。 函数参数:fill(first,last,val);//first为容器的首迭代器,last为容器的尾迭代器,替换元素的区间为[first,last),val为将要替换的值。 eg: vector <int> V; fill(V.begin(),V.end(),val);二、fill_n函数的作用是:给你一个起始点,然后再给你一个数值...

c++中创建二维数组的几种方法【代码】

一、用new申请内存空间int **dp=newint*[n];//动态申请二维数组nxmfor(int i=0;i<n;++i){dp[i]=newint[m];}二、用malloc申请内存空间int len=100;int **dp=(int **)malloc(sizeof(int) *(len+1));for(int i=0;i<=len;++i){dp[i]=newint[4]; }三、使用vector创建一个二维数组int n=10,m=2; // vector<vector<int> > dp(n);//表示二维数组有 10行 for(int i=0;i<n;i++){dp[i].resize(m);//表示二维数组有 2列} 或者v...

c++ std - accumulate 求数组和

与传统用for 循环求和不同,用的是c++ 标准库实现数组求和,以达到代码更加简洁的目的。如下:// accumulate example #include <iostream> // std::cout #include <numeric> // std::accumulateint main () {int numbers[] = {10,20,30};std::cout << "using default accumulate: ";std::cout << std::accumulate(numbers,numbers+3,0);std::cout << ‘\n‘; }原文:http://blog.csdn.net/drivermonkey/article/details...

C++逆天语法系列之二维数组

某公司的笔试题,自己分析得出的答案,并在后面对二维数组元素表示形式做出总结。新手朋友别嫌啰嗦,耐心看完并记住对你会有帮助的。老鸟们也欢迎来提意见。 int a[4][4] = {{1,2,3,4},{50,60,70,80},{900,1000,1100,1200},{13000,14000,15000,16000}};int (*p1)[4] = a;int (*p2)[4] = &a[0];int *p3 = &a[0][0];printf("%d, %d, %d, %d\n",*(*(a+1)-1),*(*(p1+3)-2)+1,*(*(p2-1)+16)+2,*(p3+sizeof(p1)-3)); 64位环境,问上述代码...

C++入门笔记(四)数组、指针与字符串【图】

1、对象数组 声明一个一维对象数组的语句形式是: 类名 数组名[常量表达式]; 每个数组元素对象都可以访问它的公有成员,一般形式是: 数组名[下标表达式].成员名 如果在声明数组时给每一个数组元素指定初始值,在数组初始化过程中就会调用与形参类型相匹配的构造函数,例如: Location a[2]={ Location(1,2), Location(3,4)}; 实例:Point.h:#ifndef _POINT_H #define _POINT_Hclass Point{ public:Point()...

【C\C++笔记】数组指针越界【代码】

指针越界,t的数组指针越界,修改了c的内容。 使用指针时,必须规定指针移动的范围#include?<iostream>using?namespace?std; int?main(){ ????char?c[11]="123456"; ????char?t[11]; ????for(int?i?=?0;i<20;i++){ ????????t[i]='a'+i; ????} ????cout<<c<<endl; ????return?0; }输出:PS E:\桌面> cd "e:\桌面\" ; if ($?) { g++ test.cpp -o test } ; if ($?) { .\test } lmnopqrst