Chinaunix首页 | 论坛 | 博客
  • 博客访问: 134939
  • 博文数量: 33
  • 博客积分: 287
  • 博客等级: 二等列兵
  • 技术积分: 380
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-13 23:06
文章分类
文章存档

2015年(3)

2014年(13)

2013年(8)

2012年(9)

我的朋友

分类: 嵌入式

2013-08-12 10:01:01



环境:

fedora 9.4

gcc version 4.3.0 20080428 (Red Hat 4.3.0-8) (GCC)



笔试题学习
****************************************************************
 

点击(此处)折叠或打开

  1. int b=4;

  2.  b +=(b++);
  3.  printf("b=%d\n",b);
  4.  b +=(++b);
  5.  printf("b=%d\n",b);
  6.  (b++)+=b;
  7.  printf("b=%d\n",b);
  8.  (++b)+=(b++);
  9.  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
****************************************************************

点击(此处)折叠或打开

  1. int f=0;
  2. f=b++;
  3. printf("b=%d\n",b++);
  4. printf("f=%d\n",f);
b=5 
b++的操作在语句完成后进行,因此f此时为4,当打印b++时候,b已经赋值为5了,如果再次打印b++就是6了
f=4
****************************************************************

点击(此处)折叠或打开

  1. char str[]="";
  2. char *p = str;
  3. int n = 10;
  4. printf("sizeof = %d\n",sizeof(str));
  5. printf("sizeof = %d\n",sizeof(p));
  6. printf("sizeof = %d\n",sizeof(n));

sizeof = 14   最后有\0
sizeof = 4
sizeof = 4
****************************************************************

点击(此处)折叠或打开

  1. void fun(char abc[20])
  2. {


  3.   printf("%s\n",abc);


  4.   printf("sizeof fun = %d\n",sizeof(abc));


  5. }



作为字符串传参数,abc的大小为指针 4 ;

****************************************************************

使用malloc 要增加stdlib.h的库文件

点击(此处)折叠或打开

  1. char str[]="";
  2. char *p=(char*)malloc(sizeof(char)*20);
  3. if(p==NULL)
  4. {
  5.   printf("malloc false");
  6.   return 0;
  7. }

  8. p= str;
  9. printf("*p = %s\n",p+1); ///是指针

打印结果为ww.baidu.com,从第二个开始打印



****************************************************************
单个字符输出

点击(此处)折叠或打开

  1. char str[]="";
  2. for(;j<15;j++)
  3. {
  4.  printf("test output str[%d]=%c\n",j,str[j]);
  5. }


使用%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]=



****************************************************************

点击(此处)折叠或打开

  1. int a[5]={1,2,3,4,5};
  2. for( i=0;i<5;i++)
  3. {
  4. int *ptr =( int *)(&a+i);
  5. printf("aa[%d]=%x\n",i,&a[i]);
  6. printf("tr[%d]=%x\n",i,ptr);
  7. }

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时将重新执行本次循环而不继续进行
例如


点击(此处)折叠或打开

  1. char i=0;
  2. while(i<10)
  3. {
  4.    if(i<1)
  5.      continue;
  6.    if(i==5)
  7.      break;
  8.     i++;
  9.  
  10.  }

程序运行的结果为一直在循环中continue。
**************************************************

如何求数组元素的个数:
#define   AR_nr(   a   )   sizeof(   a   )   /   sizeof(   a[0]   )

**************************************************
#error命令是C/C++语言的之一,当预处理器预处理到#error命令时将停止编译并输出用户自定义的错误消息。
如gcc之后显示出提示信息

阅读(1167) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~