国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

大學階段不常見的C語言表達

2019-11-11 07:26:07
字體:
來源:轉載
供稿:網友

大學階段不常見的C語言表達

 這些用法容易忘記,因為我不常用啊,每次都要翻書,今天寫出來以后就不要查書了。

重定向

輸入重定向例子:  F:/C_Study/temp1/temp1.exe < F:/C_Study/temp1/myWord.txt    把這個文檔中的數據輸入到程序。

輸出重定向例子:  F:/C_Study/temp1/temp1.exe > F:/C_Study/temp1/myword.txt    輸出到這個文本文檔。

輸出重定向追加:   F:/C_Study/temp1/temp1.exe << F:/C_Study/temp1/myword.txt

函數指針

char (*f)()=getfirst;

int (*f2)(int a,double b)=max;

返回類型  (*指針名)(函數參數);

const 修飾指針

const int *p=a; //p指向的數據不可改變;

int * const p=a;//p不可指向別的內存;

const int * const p=a;//指向的數據不可改變,p不可指向別處內存。

命令行參數

#include"stdio.h"int main(int argc,int *argv[]){	PRintf("%d ",argc);	for(int i=1;i<argc;i++)	{		printf("%s/n",argv[i]);	}	return 0;}

volatile

用于硬件地址和其他并行程序共享的數據。

防止編譯器對代碼優化。直接讀取原內存中數據。

const volatile 不能被程序改變,可以被程序以外的代理改變。

restrict

修飾指針。表示該指針是訪問的唯一方式。//這樣就可以讓編譯器優化代碼。

memcpy() 和 memmove()

memcpy(void * restrict s1,const void *restrict s2,size_t n);//從 s2 把 n 個字節復制到 s1。s1 和 s2 不可重復。 

memmove(void * restrict s1,const void *restrict s2,size_t n);//從 s2 把 n 個字節復制到 s1;

文件操控函數

fseek(文件指針,long類型偏移字節,起始位置)//SEEK_SET,SEEK_CUR,SEEK_END,成功返回0,否則返回1.

ftell(文件指針),返回當前偏移的字節數

fread(),fwrite(),feof()等等等等。本階段用不到,這里不詳舉例了。

伸縮數據

	struct a	{		int a1;		char a2[];	};	struct a *p=(struct a *)malloc(sizeof(struct a)+10*sizeof(char));	free(p);

指針

int *a[3][4]  //12個指針。指向 int *類型。

int (*a)[3][4]  //一個指針,指向 int[3][4]。

int (*a[3])[4]  //三個指針,只想 int[4].

char (*f)()  //函數指針。指向char。

char (*f[3])()  //3個指向 char的函數指針。

位字段

#include"stdio.h"#include"stdlib.h"typedef struct colour{	int a1:1;//一位 	int a2:2;//兩位 	int   :1;//無名的一位。可用于對齊。 	int   :0;//強制對其到下一個字節。 	int a3:10;//10位。 }colour;int main(int argc,int *argv[]){	colour a;	a.a1=1;	a.a2=3;	return 0;}

編譯預處理

##粘合。#粘合字符串。如 #define xname(n) x##n

__VA_ARGS__  可變參數。如  #define PR(...)  printf(__VA_ARGS__) 。  如#define PR(x,...) printf("mess"#x":"__VA_ARGS__)

#define limit 20const int lim=50;const int data[limit];//不能用 lim static int data2[limit];//不能用 lim 

#ifdef xxx    //和  #if  define(xxx) 等價。判斷是否被定義。#    .....#else#    ..... #endif

#ifnde xxx#    .....#endif

#if SYS == 1# ...#endif#if  SYS == 1#   ...#elif   SYS == 2#   ....#elif   SYS == 3#   ...#else#   ...#endif 

#if EOF == 1#error not c99#endif

#line 1000 "abc.c"  //把當前行號重置為 1000  文件名置為  abc.c

可變參數函數

#include"stdio.h"#include"stdarg.h"//可變函數頭文件 int sum(int geshu,...){	va_list ap;//存放參數的變量。 	int total=0;	va_start(ap,geshu);//把 ap 初始化為 參數列表。	for(int i=0;i<geshu;i++)	{		total+=va_arg(ap,int);	} 	va_end(ap);	return total;}int main(int argc,int *argv[]){	int a=sum(5,1,2,3,4,5);	printf("%d",a);	return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清原| 文山县| 万全县| 兖州市| 福海县| 诸城市| 泸定县| 宁安市| 林甸县| 东乡族自治县| 东乌珠穆沁旗| 新巴尔虎右旗| 延津县| 岱山县| 双牌县| 台北市| 上高县| 磴口县| 响水县| 凉城县| 手机| 澳门| 大厂| 岢岚县| 丹东市| 莱芜市| 商洛市| 平舆县| 睢宁县| 富平县| 温泉县| 仙游县| 洛扎县| 澎湖县| 鹤山市| 双鸭山市| 苍溪县| 葫芦岛市| 鄂尔多斯市| 岳西县| 德庆县|