7.有以下程序 #include int a=1; int f(int c) {static int a=2; c=c+1; return (a++)+c;} main() { int i,k=0; for(i=0;i<2;i++){int a=3;k+=f(a);} k+=a; printf(“%d\n”,k); } 程序运行结果是14
7.有以下程序 #include int a=1; int f(int c) {static int a=2; c=c+1; return (a++)+c;} main() { int i,k=0; for(i=0;i<2;i++){int a=3;k+=f(a);} k+=a; printf(“%d\n”,k); } 程序运行结果是14 7.这题有点陷阱了,先是3到f函数定义了个static int a=2;就是说第一次调用好以后a=a++吗,返回的是3+1+2=6第二次调用的时候a!=2了而是3返回的是3+1+3=7然后k=6+7=13然后k+a=13+3=16. 这题目有点不对。首先在main()函数里面没有定义过a,而你在for循环a=3就会出现异常。即使定义了,最后结果也不是14.
/* #include<iostream> using namespace std; int main() { int a[3] ={0,1,2}; int *p;//int 型指针访问一维数组 p = a; int i; for(i=0;i<3;i++) cout<<*(p)++<<endl; } */
/* #include<iostream> using namespace std; int main() { int a[3] ={0,1,2}; int (*p)[3];//用数组指针访问一维数组 p = &a; int i; for(i=0;i<3;i++) cout<<*(*(p)+i)<<endl;//这里使用*((*p)++)输出元素师不正确的 } */
#include<stdio.h> int main() { int a[3]={0,1,2}; int *p[1];//用指针数组访问一维数组 p[0] = a; int i; for(i=0;i<3;i++) printf("%d\n",*(*p+i));//或者printf("%d\n",*((*p)++)); }
/* #include<iostream> using namespace std; int main() { int a[2][3]={0,1,2,3,4,5}; int *p;//int 指针访问二维数组 for(p =a[0];p<a[0]+6;) // for(i=1,p =a[0];p<a[0]+6;p++,i++) cout<<*p<<endl; cout<<*p++<<endl; } */
/* #include<iostream> using namespace std; int main() { int a[2][3] ={0,1,2,3,4,5}; int (*p)[3];// 数组指针访问二维数组 p = a; int i,j; for(i=0;i<2;i++) for(j=0;j<3;j++) cout<<*(*(p+i)+j)<<endl; } */ /*#include<iostream> using namespace std; int main() { int a[2][3]={0,1,2,3,4,5}; int i,j,*p[2];//指针数组访问二维数组 p[0] = a[0];p[1]=a[1];//*p[2] = {a[0],a[1]}; for(i=0;i<2;i++) for(j=0;j<3;j++) cout<<*(*(p+i)+j)<<endl; }*/