📄 test.c
字号:
#define _TEST_C_#include <stdio.h>#include "my_common.h"#include "test.h"/*void exam_assert( char * file_name, unsigned int line_no )
{
printf( "\n[EXAM]Assert failed: %s, line %u\n",
file_name, line_no );
abort( );
}*/void exam_assert(char* con, char* file_name, unsigned int line_no )
{
printf( "\n[EXAM]Asserted (%s) failed: %s, line %u\n", con,
file_name, line_no );
abort( );
}
/*
#define EXAM_ASSERT( condition ) if (condition) NULL; else exam_assert( __FILE__, __LINE__ )
/* if (condition) // 若条件成立,则无动作
NULL;
else // 否则报告
*/ //struct list;struct link{ struct link *pre; struct link *suc; struct list *member_of;//没有list的定义都可以编译通过?被优化了? }link_array[2];struct link *plink=link_array;/*struct list{ link* head;};*/struct sub_str_test;typedef struct str_test{ int a; char b; char *p ; struct sub_str_test *pp;} str_test_t ;struct sub_str_test{ int d; str_test_t *ppp;};str_test_t a_str_test;//={11,22} ;str_test_t *p_str_test=&a_str_test;//p_str_test = (str_test_t *)&a_str_test;//struct str_test *p_str_test=&a_str_test;//p_str_test ->a = 1111;//p_str_test ->b = 11;void main(void){ int cycle_count = 10; int ii=0,jj=0,nn=0; int * i_pointer=NULL; char * ch_pointer=NULL; char *ch_pointer1=NULL ; int i_array[6]={1,2,3,4,5}; char *fo_char; unsigned char sign_test_u = -1;//good unsigned char sign_test_s = 'a';//sign_test_u ; char ch_from[]="I am a student!";//字符数组的成员可以修改 \ 它定义的是一系列它的成员,而不是指针,但可以通过指针调用它。\ 它的成员处在栈内,在本函数结束后被释放。 //char ch_to[]="I am a teacher!"; //char ch_to[10]={"J"};//不能不声名长度又不赋值的初始化-char ch_to[];如果不声名长度的初始化 \ 容易出现溢出,程序只分配初始化个变量的内存。 char ch_to[][10]={{"J"},{"N"}}; char *ch_pointer2="u are stupid!";//ch_pointer2 指向常量字符串,不能通过ch_pointer \ 修改它的成员值 如ch_pointer2[0]='i'。就是说这里只定义了一个指针\ 不是它的值,该字符串处在全局变量区(.data),但不可以修改。(对于intel cpu如此,coldfire则可以) //*ch_to='U'; EXAM_ASSERT(1); sign_test_u += sign_test_s; ch_to[0][0]='J'; //J在代码段(.text) ch_to[0][1]='j'; ch_to[0][2]='Y'; ch_to[0][3]='y'; ch_to[1][0]='N'; ch_to[1][1]='u'; ch_to[1][2]='i'; ch_to[1][3]='c'; ch_pointer1=ch_to[1]; //ch_pointer1[0]='H'; //ch_pointer1[3]='s'; //ch_pointer2[0]='Y'; //for( nn=0;nn<16;nn++) //ch_pointer1[ii++]=ch_from[jj++]; //ch_to[ii++]=ch_from[jj++]; /* while((ch_pointer1[ii++]=ch_from[jj++])!='\0') { ; } */ ch_pointer= ch_get_pointer(); i_get_pointer(&i_pointer); do{ printf("do.... while ; the value of \\0 is %d \n", EOF); } while(cycle_count--) ; p_str_test->a = 33; p_str_test->p = p_str_test; printf("the member of the str_test:a=%d ,b=%d,*p=%d \n" ,p_str_test->a ,p_str_test->b,*(p_str_test->p)); printf("1:%s\n", ch_pointer); printf("2:%d\n", *i_pointer); printf("3:%s\n", ch_pointer1); printf("4:%s\n", ch_pointer2); printf("5%s\n", ch_from); printf("6:%d\n", ch_head); printf("7:%d\n", sign_test_s); printf("8:%d\n", sign_test_u); /* fo_char = fo_test();//test the file operation printf("a2i(fo_char) is %d,fo_char is %s \n",a2i(fo_char),fo_char); //contrast( a2i(fo_char) ); contrast(a2i(fo_char) ); */ macro_test(); test_ll(); //april(); ll_demo();//ll_fo.c plinklist();//linklist.c test_while();//temp.c return ; }char *ch_get_pointer(void){ char* p="hello,pointer!";//hello...字符串的内容不可修改 return p ; } void i_get_pointer(int **p) //need **{ static int a=10; //ru guo bu jia static ,zhe a de zhi hui bei shi fan // ze **p de zhi bu que ding static int i_array2[6]={1,2,3,4}; //*p=&a ; *p=i_array2; return ; } void *memcpy(void * __dest, const void * __src, int __n){ int i; if((NULL == __dest)||( NULL == __src)||(__n < 0 ) ) { return NULL ; } volatile unsigned char *d = __dest; volatile unsigned char *s = __src; for (i = 0; i < __n; i++ ) { d[i] = s[i]; } return d;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -