笔试题

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() 
{ 
	int y,x;
	for(y=1,x=1;y<=50;y++)
	{
		if(x=10)       //这也太狠了吧 竟然看成了x==10
			break;
		if(x%2==1)
		{
		x+=5;
		continue;
		}
	 x+=3;
	}

	printf("%d",y);
}
int main() 
{ 
	char b[30];
	strcpy(&b[0],"CH");  
	strcpy(&b[1],"DEF");
	strcpy(&b[2],"ABC");
	printf("%s\n",b);
}
CDABC


int fun(int x,int y)
{
static int m=0,i=2;    //此处m和i 都为静态变量
i+=m+1;
m=i+x+y;
return m;
}
int main() 
{ 
	int j=4,m=1,k;
	k=fun(j,m);
	printf("%d",k); //8
	k=fun(j,m);
	printf("%d\n",k); //17
	
	
}

静态局部变量存储的全局区  在程序结束才释放  默认初值为0    程序结束前一直存在 虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值 自动变量不赋初值,则其值是不定的

#define MAX 3
int main()
{
int i;
unsigned char  A[MAX];
for (i=0;i<=MAX;i++)
	{A[i]=i;
printf("%d",A[i]); //3
}
printf("%d",i); //4
return 0;
}
C语言编译时对数组下标越界不检查,运行时就会出现内存错误。
会造成程序运行时崩溃。 因为现在这段内存是连续的并且A[3]现在没有被占用,所以能输出

void f(int a,int* b,int& c,int*& d)
{
*d=4;
c=3;
a=1;
*b=2;  //除了传值的形参,看最后一个是多少 输出就是多少
}

void  main()
{
int a=0;
int* b=&a;  //b 是指向a的指针
int& c=a;
int*& d=b;     //d是指向b的指针,指针的指针
f(a,b,c,d);
cout<< a<<" ,"<<*b<<" ,"<<c<<" ,"<<*d<<endl; //2,2,2,2

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值