c++

int a[]={1,2,3}
int a[10]={0};
int a[5];
× int a[];
ps:数组名不能自增,a++错,a+1对
数组下标的下限是 0
1、int(p)[4];———ptr为指向含4个元素的一维整形数组的指针变量(是指针)
2、int
p[4];———-定义指针数组p,它由4个指向整型数据的指针元素组成(是数组)
3、int()[4];————实际上可以看作是一种数据类型。也就是第一个(int(p)[4];)
数组 - 图1

char* p= newchar[100]

p在栈,new在堆

定义

数组作为实参时必须指定列数,否则可能产生歧义

形参写法:

int a[][5];√ int a[5][];×
int (*s)[5];√

定义:

int a[][3]={};√
“int * p=new int(10);”表示动态分配1个整型内存空间,初值为10;

地址,引用

int a; &ra=a;//引用
int a; ra=&a;//获得地址
数组 - 图2
数组 - 图3
数组 - 图4
数组 - 图5

字符串数组

A:char s[80] = {“A”, “B” ,”C”}
后面是对数组元素进行初始化,而每个元素是字符所有应该用单引号。
B:char s[80]; s = {‘A’, ‘B’,’C’}
这个的错误是由于对数组初始化必须在定义的时候,否则不能对数组进行像上面这样的整体赋值,只能对单个元素进行赋值。
char s[80]; s = “ABC”;
这个的错误原因和B类似。
char s[80] =”ABC”;
对字符串进行sizeof操作的时候,会把字符串的结束符”\0”计算进去的,进行strlen操作求字符串的长度的时候,不计算\0的