笔记(8)类型限定词const等

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

类型限定词const
  若变量声明中有const,则不能通过赋值、增量、或减量运算来改变量的值。
  const float *pt;r//和float const *ptr;一样
  float * constptr;--->>>是一个ptr常量指针
  必须总是指向同一地址,但指向的值可以改变。
  const float * const ptr;
  必须总是指向同一位置,且它所指位置存储的值不能改变。
  总结:一个位于*左边任意位置的使得数据成为常量,而一个位于*右边的const使得指针自身成为常量
 
  类型限定词volatile
  volatile告诉编译器该变量除了可被程序改变以外还可被其他代理改变
  volatile int loc; //loc是一个易变的位置
  volatile int *ploc;//ploc指向一个易变的位置

  类型限定词restrict
  restrict限定的指针被认为是提供了对其所指向的数据块的唯一访问途径.
**********************************************************************************

#include<stdio.h>
char color = 'B';
void first(void);
void first1(void);
int main()
{
  extern char color;
  printf("main1--%c\n",color);
  first();
  printf("main2--%c\n",color);
  first1();
  printf("main3--%c\n",color);
  return 0;
}
void first(void)
{
char color;
color='R';
printf("first--%c\n",color);
}
void first1(void)
{
char color;
color='G';
printf("first1--%c\n",color);
}
**********************************************************************************

#ifdef、#else和#endif指令

#ifdef MAVIS
        #include"horse.h" //如果已经用#define定义了MAVIS,则执行这里的指令
        #define STABLES 5
#else
      #include"cow.h"    //如果没有用#define定义了MAVIS,则执行这里的指令
        #define STABLES 15
#endif     
**********************************************************************************

#include<stdio.h>
#define JUST_CH
#define LIMIT 4
int main()
{
  int i;
  int total=0;
  for(i=1;i<=LIMIT;i++)
  {
          total+= 2*i*i+1;
#ifdef JUST_CH
            printf("i=%d,running total = %d\n",i,total);
#endif
  }
  printf("Grand total = %d\n",total);
  return 0;
 
}
**********************************************************************************

  qsort()的使用:
  #define NUM 40
  int mycomp(const void *p1,const void *p2);
  doublea[NUM];-->>接着对数组进行值初始化
  qsort(a,NUM,sizeof(double),mycopm);
  int mycomp(const void *p1,const void*p2)//按从小到大排序
  {
          //需要使用指向double的指针访问值
          const double *a1=(const double *)p1;
        const double *a2=(const double*)p2;

        if(*a1<*a2)
            return -1;
        else if(*a1==*a2)
            return 0;
        else  
            return 1;
  }
**********************************************************************************

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值