c语言
sanpam
这个作者很懒,什么都没留下…
展开
-
是否了解printf("%s",....)与printf("%c",...)的区别,指针的强制转换成一维指针和二维指针甚至多维指针时如何正确使用
代码1: #include <stdio.h>#define va_list void*#define va_start(arg, start) arg = (va_list)( ((char*)&start) + sizeof(start) )void print( char* format, ...){ va_list arg; printf(...原创 2018-09-09 12:03:29 · 2068 阅读 · 0 评论 -
setbuf使用细节
#include <stdio.h>int main(){ int c; char buf[BUFSIZ]; setbuf(stdout, buf); while((c=getchar())!='b') { putchar(c); fflush( stdout ); } return 0;}setbuf...原创 2018-11-02 21:50:57 · 1853 阅读 · 1 评论 -
高级指针话题习题精讲
要求:5.编写代码处理命令行参数是十分乏味的,所以最好有一个标准函数来完成这项工作。但是不同的程序以不同的方式处理它们的参数,所以,这个函数必须非常灵活,以便使它能用于更多的程序。在本题中,你将编写这样一个函数。你的函数通过寻找和提取参数来提供灵活性。用户所提供的回调函数将执行实际的处理工作。下面是函数的原型。注意它的第四个参数和第五个参数是回调函数的原型。char ** do_args...原创 2018-11-01 12:27:04 · 192 阅读 · 0 评论 -
《c与指针》第13章课后习题4
#include <stdio.h>#include <stdlib.h>#include <string.h>int arry[4] = { 6, 2, 3, 1 };int cmp ( void * a, void * b){ return ( *(int*)a - *(int*)b );}/* 比如6,2,3,1 开始先以6为...原创 2018-10-31 10:58:45 · 250 阅读 · 0 评论 -
使用typedef分解复杂指针声明技巧与具体实例
int * ( * ( * (*abc)() ) [6] ) ( )解读:解读顺序,红->橙->绿->黑1.红色部分为 函数指针2.橙色部分为 数组指针3.绿色部分为 函数指针4.黑色部分为 返回类型为int*型综合:指向《返回值为“ 指向 ‘返回值为int型指针的函数指针’ 的数组指针 ”》类型 的函数指针#include <...原创 2018-10-29 12:48:38 · 284 阅读 · 0 评论 -
反序排列单链表
#include <stdlib.h>#include <assert.h>#include <stdio.h>typedef struct NODE{ int value; struct NODE *link;} Node;/* 创建一个链表 */Node* newnode( int value ){ Node *ne...原创 2018-10-21 11:51:46 · 317 阅读 · 0 评论 -
复杂指针声明具体实例
左右声明法则:首先从最里面的圆括号(未定义的标识符)看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明修正:笔者要对这个法则进行一个小小的修正,应该是从未定义的标识符开始阅读,而不是从括号读起,之所以是未定义的标识符,是因为一个声明里面可能有多个标识符,但未定义的标识符只会有一个。链接:https:...原创 2018-10-28 12:41:57 · 506 阅读 · 0 评论 -
插入双链表的详细解析
#include <stdlib.h>#include <assert.h>#include <stdio.h>typedef struct NODE{ struct NODE *f; struct NODE *b; int value;}Node;int dl...原创 2018-10-20 12:20:43 · 885 阅读 · 0 评论 -
索引表
#include <stdlib.h>#include <assert.h>#include <stdio.h>#include <string.h>#define TRUE 1#define FALSE 0/* 定义了一个单词链表,存放以该字母开头的单词链表 */typedef struct WORD{ char *word...原创 2018-10-22 09:57:54 · 1698 阅读 · 2 评论 -
单链表详细解析
#include <stdlib.h>#include <assert.h>#include <stdio.h>typedef struct NODE{ int value; struct NODE *link;} Node;/* 创建一个链表 */Node* newnode( int value ){ Node *new...原创 2018-10-19 10:06:42 · 340 阅读 · 0 评论 -
typedef 与 define的作用域
#include <stdio.h>void kk(){ typedef char CHAR; #define INT int}int main(){ CHAR a = 3;// printf( "%d\n", a); return 0;}报错:1212121212.c:13:4: error: unknown type name 'C...转载 2018-09-28 19:07:36 · 358 阅读 · 0 评论 -
Typedef中一个“PF Register( PF test )”使用实例
#include <stdio.h>//typedef定义一种类型,带有两个int型参数并返回int型数据typedef int (*PF) ( const int * ,const int *);//选出最大的数int max( const int *x, const int *y ){ if( *x > *y ) return *x; else...原创 2018-09-28 18:09:41 · 278 阅读 · 0 评论 -
c语言关于结构体字节对齐
https://blog.csdn.net/qq_28238141/article/details/79976062转载 2018-10-02 15:23:12 · 142 阅读 · 0 评论 -
如何巧妙的在字符串末尾添加'\0'
#include <stdio.h>#include <ctype.h>#include <string.h>#define TRUE 1#define FALSE 0intprepare_key( char *key ){ register char *keyp; register char *dup; register in...翻译 2018-09-19 22:27:02 · 9702 阅读 · 0 评论 -
const变量是否真的不能修改吗?
代码一:#include <stdio.h>#include <string.h>char *my_strnchr( const char *str, int ch, int which ){ int n = 0; do { if( *str == '\0') { return 0; } if( *str++ == ch ) ...原创 2018-09-18 22:47:32 · 445 阅读 · 0 评论 -
八皇后问题
#include <stdio.h>#define TRUE 1#define FALSE 0int board[8][8];void print_board(){ int row; int column; static int n_solutions; n_solutions += 1; printf( "solution %d\n", n_s...翻译 2018-09-16 23:31:52 · 136 阅读 · 0 评论 -
用c语言自己写一个简单的print函数
#include <stdio.h>#define va_list void*#define va_arg(arg, type) *(type*)arg; arg = (char*)arg + sizeof(type);#define va_start(arg, start) arg = (va_list)(((char*)&(start)) + sizeof(...原创 2018-09-09 21:26:36 · 8285 阅读 · 0 评论 -
指针类型的强制转换理解(二)
链接地址:https://blog.csdn.net/tustyao/article/details/47061959代码一:#include <stdio.h>int main{ int b = 12; int *p = &b; //指针变量p指向变量b printf("%p\n",p);//指针p保存的b的地址 pri...原创 2019-09-27 15:47:18 · 435 阅读 · 0 评论