int a[3][4]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
}
行地址增加为a+1,地址变动大,即地址增加isizeof(type)4 #4是每一行有4个元素
ps 行数初始化时可以省略 计算用到列
列地址增加为(a+i)+j,即地址增加jsizeof(type),其实也就是a[i]+j
意义整理
1此处有转身,地址类型转换,不是运算符 行转列
2取址
数组a[i]相当于(a+1),第一行首地址
不写全的多维数组就是找到首地址
写全了就是找内容,二维数组两个*
((a+i)+j)
外边的*是运算符,取值
里面的是地址类型转变换
char s[10]=””
*p=s
for(;*p!=/0;p++)
指针数组 是数组
字符串
可读可写char str[20]=”abcdefg”
常字符串 可读不可写 一定和指针配合 系统自己找位置加’\0’
char *p=”abcdefg”;取了字符串的首地址 申请字节恰好匹配
or
char *p;p=””abcdefg
二维数组若用name[5][8]浪费空间
数组指针 是指针
一维数组p=a,加减同步
多维数组 不可以用 int p = a;a+1会跳行数 即16字节;p+1 跳一个sizeof int 4个字节 不同步
为了同步 重新定义指针,
(*p)[4],j;#这里的4是列数 要相同 以同步
新定义int b[3][2],(*p)[2]
下标好写但是慢
for(p=a;p<a+3;p++)
for(int *pcol=*p;*pcol<pcol<*p+4;pcol++)
cout<<*pcol<<endl;
Comment
