C学习点滴

1)

 

 在给数组初始化时这种做法是不正确的:

int a[3];

a[3] = {1, 2, 3};

-----------------------------

也不正确:

struct{

int a[3];

}stu;

 

stu.a[3] = {1, 2, 3};

 

正确的:

int a[3] = {1, 2, 3};

 

-----------------------------------

 

(2)C语言规定返回值为整型的函数在调用之前可以不必声明

 如:

#include <stdio.h>

main()                      //在main函数前没有声明swap 函数
{
 int x=3,y=4;
 int *p1,*p2;
 p1=&x;
 p2=&y;
 swap(p1, p2);
 printf("%d/n%d/n", x,y);
}

int swap(int *p1, int *p2)
{
 int z;
 z=*p1;
 *p1=*p2;
 *p2=z;
}
输出:

4

 

 

----------------------------------

 

(3)struct 结构体小结

 

struct student{

                int num;

                char name[100];

                int score[3];

}stu[5], stu1;

 

赋值只能在初始化时赋值

如:

struct student{

                int num;

                char name[100];

                int score[3];

}stu1 = {1, "gu", 99, 99, 98};      //数组也一样       //字符数组加引号

 

 

不可以这样赋值:

struct student{

                int num;

                char name[100];

                int score[3];

}stu1;     

stu1 = {1, "gu", 99, 99, 98}; 

 

不可以这样整体引用数组:

for(i=0; i<5; i++)

{

      scanf("%s/n", &stu[i]);

      printf("/n");

}

 

也不可以这样:

for(i=0; i<5; i++)

{

      printf("%s/n", stu[i]);

}

 

=======================

但可以这样:

struct student
{
        int number;
        char name[10];
        int score[3];
        int average;
}stu[5], stu1;

 

 for(i=0; i<4; i++)
  for(j=0; j<5-i; j++)
  {
   if(stu[j].average > stu[j+1].average)         //结构体不可以整体比较,如:不可以这样:  if(stu[j]>stu[j+1])

 

                                                                         //只能用里面的成员比较,如:stu[j].average > stu[j+1].average
   {
    stu1 = stu[j];
    stu[j] = stu[j+1];
    stu[j+1] = stu1;                         //可以这样用,结构体之间可以互相赋值
   }
  }

 

 for(i=0; i<5; i++)
 {
  if(fread(&stu[i], sizeof(struct student), 1, fp1) != 1)
  {
   printf("error !/n");
   exit(0);
  }
 }

 

============================================

(4)break的一些注意点

 

#include <stdio.h>

#include <stdio.h>

main()
{
 int i;
 while(1)
 {
  printf("input i:/n");
  scanf("%d", &i);
  switch(i)
  {
   case 1:printf("/nguwansheng1/n");break;
   case 2:printf("/nguwansheng2/n");break;
   case 3:printf("/nguwansheng3/n");break;
   case 4:printf("/nguwansheng4/n");break;
   default :printf("error/n"); 
  }
 }
}

输入:

1

输出:

guwansheng1

输入8

输出:

error

 

输入1后输出guwansheng1后跳出switch但没有跳出while,只跳出内层的那个(switch),跳出后会继续提示:input i:

 

#include <stdio.h>

main()
{
 int i;
 while(1)
 {
  printf("input i:/n");
  scanf("%d", &i);
  switch(i)
  {
   case 1:printf("/nguwansheng1/n");break;
   case 2:printf("/nguwansheng2/n");break;
   case 3:printf("/nguwansheng3/n");break;
   case 4:printf("/nguwansheng4/n");break;
   default :printf("error/n"); 
  }
  printf("i love my mother!/n");
  if(i==1)
  {
   break;                                       //这个break使整个程序结束
  }
 }
}
输入:1

输出:

guwansheng1

i love my mother!

 

跳出while,整个程序结束了,下面没有提示

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值