数组
数组是同名、同类型元素的有序集合,被顺序存放在一个连续的内存中,而且每一个元素的存储空间的大小相同。
数组的存储
一维数组的存储结构是线性的,所以数组元素按照下标值有小到大的顺序依次存放在一块连续的内存中,即数组的内存。
对于二维数组,用矩阵方式存储元素,在内存中仍然是线性结构。
注:
数组中第一个元素的存储地址就是整个数组的存储地址,该地址放在数组名中。
指针与一维数组
系统需要提供一定量连续的内存来存储数组中的各元素,内存都有地址。
指针变量即存放地址的变量,如果把数组的地址赋给指针变量,就可以通过指针变量来引用数组。
引用数组元素2大方法:
1.下标法
int a[5]; //声明数组变量a[0]=1; //给a数组的第0个元素赋值a[0]; //即a数组的第0 个元素
2.指针法
int a[5] ; //声明数组变量int *p ; //声明指针变量p=&a[0]; //将a[0] 元素的地址赋值给指针变量
注:
p指向数组a的第0号元素的地址。
实例:通过指针变量获取数组中的元素
/*通过指针变量获取数组中的元素*/#includeusing namespace std;void main(){int a[5];int *p;int i;a[0] = 0;a[1] = 1;a[2] = 2;a[3] = 3;a[4] = 4;a[5] = 5;p=&a[0];for(i=0;i<=5;i++,p++) //循环增加指针地址cout<
结果为:
通过数组名获取首元素地址
/*通过数组名获取首元素地址*/#includeusing namespace std;void main(){int a[5];int *p;int i;for(i=0;<5;i++)a[i]=i;p=a;//输出首地址cout<结果为:
指针与二维数组
二维数组的内存地址也是连续的。二维数组是一维数组的变体。二维数组的存储是按层累加的。
实例:将多维数组转化为以为数组
/*将多维数组转化为以为数组*/#include using namespace std;void main(){int twoarray[2][3]={{1,2,3},{4,5,6}}; //数组赋值int onearray[6] ={0}; //声明变量并赋值int row,col ,i;for(row=0;row<2,row++){ for(col =0 ;col<3;col++){ cout<
结果为:
指针的作用
遍历数组数组指针字符指针函数指针...
实例:指针遍历2维数组
/*指针遍历2维数组*/#include #include //manip是manipulator(操纵器)using namespace std;void main(){int twoarray[2][3]={1,2,3,4,5,6}; //定义数组并赋值int *p ;p=twoarray[0];for (int i=0;i
结果为:
注:
#include: io:input/output ;manip:manipulator(操纵器)
#include作用:
对cin,cout之类的一些操纵运算子:dec 置基数为10 相当于"%d"hex 置基数为16 相当于"%X"oct 置基数为8 相当于"%o"setfill( 'c' ) 设填充字符为csetprecision( n ) 设显示有效数字为n位setw( n ) 设域宽为n个字符
使用数组地址输出二维数组
/*使用数组地址输出二维数组*/#include #include //manip是manipulator(操纵器)using namespace std;void main(){int twoarray[2][3]={{1,2,3},{4,5,6}};//定义数组 并赋值int i ,j;for (i=0;i<2;i++) //行{for (j=0;j<3;j++){cout<
结果为:
指针与字符数组
字符数组是一个一维数组,使用指针同样也可以引用字符数组。引用字符数组的指针叫字符指针。
字符指针指向的是字符型内存空间的指针变量。字符数组就是一个字符串。
char *p ; char *string ="https://www.toutiao.com/c/user/50102795912/#mid=1611769551535107";//等价char *q ;q ="剑云锋 ";
指针与字符数组的应用
连接两个字符数组
#includeusing namespace std;void main(){ char str1[30]; char str2[20]; char *p1; chat *p2;p1=str1;p2=str2;cout<
输入字符: 剑云锋欢迎你们 + 谢谢!
结果为:
注:
VS2015使用的是新C标准,也就是C11,而VC6.0用的是老标准。
在新标准中,应该是用gets_s代替gets