环境:
fedora 9.4
gcc version 4.3.0 20080428 (Red Hat 4.3.0-8) (GCC)
笔试题学习
****************************************************************
-
int b=4;
-
-
b +=(b++);
-
printf("b=%d\n",b);
-
b +=(++b);
-
printf("b=%d\n",b);
-
(b++)+=b;
-
printf("b=%d\n",b);
-
(++b)+=(b++);
-
printf("b=%d\n",b);
main.c:14: error: lvalue required as left operand of assignment
main.c:17: error: lvalue required as left operand of assignment
这两种赋值方式不是被接收的
b 分别为9和10
****************************************************************
-
int f=0;
-
f=b++;
-
printf("b=%d\n",b++);
-
printf("f=%d\n",f);
b=5
b++的操作在语句完成后进行,因此f此时为4,当打印b++时候,b已经赋值为5了,如果再次打印b++就是6了
f=4
****************************************************************
-
char str[]="";
-
char *p = str;
-
int n = 10;
-
printf("sizeof = %d\n",sizeof(str));
-
printf("sizeof = %d\n",sizeof(p));
-
printf("sizeof = %d\n",sizeof(n));
sizeof = 14 最后有\0
sizeof = 4
sizeof = 4
****************************************************************
-
void fun(char abc[20])
-
{
-
-
-
printf("%s\n",abc);
-
-
-
printf("sizeof fun = %d\n",sizeof(abc));
-
-
-
}
作为字符串传参数,abc的大小为指针 4 ;
****************************************************************
使用malloc 要增加stdlib.h的库文件
-
char str[]="";
-
char *p=(char*)malloc(sizeof(char)*20);
-
if(p==NULL)
-
{
-
printf("malloc false");
-
return 0;
-
}
-
-
p= str;
-
printf("*p = %s\n",p+1); ///是指针
打印结果为ww.baidu.com,从第二个开始打印
****************************************************************
单个字符输出
-
char str[]="";
-
for(;j<15;j++)
-
{
-
printf("test output str[%d]=%c\n",j,str[j]);
-
}
使用%c作为单个字符的输出符号
test output str[0]=w
test output str[0]=w
test output str[1]=w
test output str[2]=w
test output str[3]=.
test output str[4]=b
test output str[5]=a
test output str[6]=i
test output str[7]=d
test output str[8]=u
test output str[9]=.
test output str[10]=c
test output str[11]=o
test output str[12]=m
test output str[13]=
test output str[14]=
****************************************************************
-
int a[5]={1,2,3,4,5};
-
for( i=0;i<5;i++)
-
{
-
int *ptr =( int *)(&a+i);
-
printf("aa[%d]=%x\n",i,&a[i]);
-
printf("tr[%d]=%x\n",i,ptr);
-
}
aa[0]=bfaf46b0
tr[0]=bfaf46b0
aa[1]=bfaf46b4
tr[1]=bfaf46c4
aa[2]=bfaf46b8
tr[2]=bfaf46d8
aa[3]=bfaf46bc
tr[3]=bfaf46ec
aa[4]=bfaf46c0
tr[4]=bfaf4700
内存是按照字节来计算的,如果是char型的每次增加1,int的每次增加4
char*ptr = (char*)(&a[i]);
如果这样,每次增加的为一个字节
**************************************************
if else
如果是这种结构
if(a)
do;
if (b)
do;
按照顺序执行
如果是
if(a)
do;
else if (b)
do;
满足了a 不会接下来往下面执行
int m=0;
39 if(m==0)
40 printf("m==0\n");
41 if(m==0)
42 printf("m==0 2\n");
比如这个的执行结果是?
39 if(m==0)
40 printf("m==0\n");
41 else if(m==0)
42 printf("m==0 2\n");
这样呢???
**************************************************
continue的用法,
使用continue时将重新执行本次循环而不继续进行
例如
-
char i=0;
-
while(i<10)
-
{
-
if(i<1)
-
continue;
-
if(i==5)
-
break;
-
i++;
-
-
}
-
程序运行的结果为一直在循环中continue。
**************************************************
如何求数组元素的个数:
#define AR_nr( a ) sizeof( a ) / sizeof( a[0] )
**************************************************
#error命令是C/C++语言的之一,当预处理器预处理到#error命令时将停止编译并输出用户自定义的错误消息。
如gcc之后显示出提示信息
阅读(1167) | 评论(0) | 转发(0) |