它与 a+i相等。
如果想表示数组中a[i][j]这个元素地址,可以有: &a[i][j] a[i]+j *(a+i)+j
如果想表示a[i][j]这个元素,可以有: a[i][j] *(a[i]+j) *(*(a+i)+j)
int a[3][4],*p[4];
在C里,*和[ ]的优先级相同,C采取自右向左的结合方式;
p是一个数组,共有4个宽度,共可存放四个指针:p[0]、….p[3]。
p[0]=&a[1][1];
int a[3][4],(*p)[4];
p是一个指针,它可以指向一个含有四个元素的一维数组。
我们把这样的p称为二维数指针:
p=a;
p是指向二维数的首地址a。 以后,p就是a,a就是p
如果实参是二维数组名,那么形参必须是二维数组指针,或者也是一个二维数组。
应用:
已知有一个二维数组
1 2 3 4 5 6 7 8 9
要求以主对角线为对称轴,上三角与下三角元素相加,结果放入下三角,上三角元素统一清0 1 0 0 6 5 0 10 14 9
第十章 字符串
?\\0? 字符串的结束标志,一般情况下,?\\0?系统会帮忙添加 1 字义 char s[20]; 2 赋初值
char s[6]= {'c','h','i','n','a'}; char s[ ]= {'c','h','i','n','a'}; char s[6]=“china”; char s[ ]=“china”; 3 输入和输出
对字符串的输入和输出,都只要给出首地址就可以。
scanf(“%s”,s);
缺点:不能接收空格
两个专门处理字符串的输入输出函数: gets()
puts() ?\\0? 0
4 有关字符串的四个重要函数: strlen(a) 求字符串a 的长度; strcpy(a,b) 把串b复制到串a中; strcat(a,b) 把串b连接到a的尾部;
strcmp(a,b) 比较a和b的大小,如果a比b大,值为1,如果a比b小,值为-1,如果两者相等,值为0。
if(strcmp(a,b)==0).....
应用:编写fun(),实现求字符串的长度