#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
}