C语言基础杂碎

逗号表达式

#include <stdio.h>
int main (){
  int a = 3;
  int b = (a=a*2,a*6);
  printf("%d",b);
}//结果是36.

loop以及goto语句使用

#include <stdio.h>
int main(int argc, const char * argv[]) {
    //用goto loop 实现100内求和
    int i,sum;
    loop : if(i<=100){
        sum += i;
        i++;
        goto loop;
    }
    printf("%d\n",sum);
    return 0;
}

无参宏与有参宏

#include <stdio.h>
#define X 100  //宏定义后面没有分号
#define Y 200
#define MAX(a,b) (a>b)?1:0

int main(int argc, const char * argv[]) {
    //无参宏与有参宏基础
    int i = MAX(X,Y);
    printf("%d\n",i);
    return 0;
}

ifdef三种形式

1.如果标识符已经被宏定义过,则执行程序段1,否则执行程序段2。

    #ifdef 标识符
                程序段1
          #else
                程序段2
          #endif

2.与1相反。

    #ifndef 标识符
            程序段1
         #else
            程序段2
         #endif

3.if后面逻辑为真则执行程序段1,否则执行程序段2。

    #if 常量表达式
                程序段1
         #else
                程序段2
         #endif

指针变量获取字符串首地址

其他都中规中矩,这个比较特殊。

char x = "abc";
//注意格式,指针存的是字符串首字母的地址。

指针调用函数

//声明一个函数指针: int (*p)();
#include <stdio.h>

int max (int a, int b){
    if (a>b ) return  a;
    else return b;
}

int main(int argc, const char * argv[]) {
    //指针调用函数

    //声明函数
    int max(int a , int b);

    int (*p)();
    p = max;

    printf("%d\n",(*p)(100,200));

    return 0;
}

指针型函数

即函数返回值为一个地址,注意函数定义格式以及调用格式。

#include <stdio.h>

//指针形函数的格式如下
int *max (int a){
       //定义一个数组指针,存放一组数据
    char  *x[]={"sun","yang","fan","shuai"};

    if ((a>=0)&&(a<4))
    return x[a];
    else
        return 0;
}

int main(int argc, const char * argv[]) {
//指针形函数,即返回值为地址
    printf( "%s\n",max(0));
}

位域

  • 一种结构体的变种

  • 用于存放一些类似开关变量,每个成员分配的位数小与8位,即一个字节。

struct k{
    int a:1;
    int  :2;    //成员可以没有名字,但这两位就不能使用
    int b:3;
    int c:2;
};
struct k{
    int a:1;
    int  :0;    //空域,下面的成员从下一个字节开始。
    int b:3;
    int c:2;
};
posted @ 2017-10-15 23:42  icanactnow  阅读(145)  评论(0编辑  收藏  举报