int a[]={1,2,3,4,5,6,7,8,9,0};int *p;for(p=a;p<a+10;p++){ printf("%d",*p);} 你这个i 很莫名其妙啊 上面的程序等同于下面这个程序 int a[]={1,2,3,4,5,6,7,8,9,0};int i;for(i=0;i<10;i++){ printf("%d",a[i]);} for (p=a ;p<a+10;p++)p=a这个意思是
所以前面*取的就是{7,8,9}的首元素值,再算++,就是对首元素的值自增。所以这个代码,pa是指向二维数组的指针,那么式子就是对第三行首元素值自增。下面我们可写代码测试:include <stdio.h> int main(){ int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};int (*pa)[3]=a;printf(...
用一个两重循环就可以了:#include <stdio.h>void main(){int a[3][4] = {0}, row, col;printf("请输入数组元素的值(3行4列): \n");for (row=0; row<3; row++)for (col=0; col<4; col++)scanf("%d", &a[row][col]);printf("您输入的数组为:\n");for (row=0; ...
1、使用多维数组读入数字即可。2、例程:include <stdio.h>int main(void){ int a[3][4], i = 0, j = 0; for(i = 0; i < 3; i++) for (j = 0; j < 4; j++) scanf("%d;", &(a[i][j])); for(i = 0; i < 3; i++) { printf("\na[%d...
然后在while循环中,i作为数组的行来参与运算。我们发现当到第二行时是直接运行了continue语句,不会执行后面的do~while语句。那么满足i++<4的i就有1、3,在此基础上满足j<4的j值有0-3,所以程序就是对数组的第1、3行的每一列数据进行相加,然后结果放在s中,所以s=5+6+7+8+15+16+17+18...
(*p)[4]=a表示将这个二维数组的首地址即&a[0][0]赋给(*p)[4],初始化时这里(*p)其实相当于&a[0],若*(p+i)则相当于a[i](*(p+i)+ j)就相当于a[i][j],两个for循环就是执行1+3+9+11+17+19=60结果:60p是一个指向一维数组的指针,循环的作用是将二维数组1 3 5 79...
"\n":" ");//输出一维数组, //并利用三目运算符实现满6个数断行 } return 0;}include <cstdio>int main(){int k=0,b[12];int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};for(int i=0;i<3;i++)for(int j=0;j<4;j++){b[k]=a[i][j];k++;}for(i...
include <iostream> include <stdlib.h> using namespace std;int main(){ int a[]={1,2,3,4,5,6,7};int b[]={2,4,6,8};int *c=b; //通过传址,c和b一样了 (c+1)=a[1]+a[2]; //即c[1]=2+3=5,因此此时b[1]=5 c=a; //所以a和c一样了 (a+1)=b...
不能使用中文标点。改正标点后,程序已经运行通过,运行答案是12。include<stdio.h> /*这里原来多了一个a*/ main(){int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i;for (i=0;i<4;i++)p[i]=&a[i*3];printf("%d\n",p[3][2]);} p[3]是...