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;
};