c中概念

来源:互联网 发布:为知笔记导出 编辑:程序博客网 时间:2024/06/16 04:37
 20150324

 函数参数:
 int test(){return 0;}//任意多个参数
 int test(void){return 0;}//不能传参数
 test(1,2);//可以访问void test()自定义函数,但不能访问void test(void)函数
 函数名是一个地址
 
函数指针变量:
int print(int *a,int c);
int (*printFunc)(int *a,int c);
print,&print//都是取地址,与数组相同
一下两者都是同样的调用函数,但前者较为常用:
printFunc(a,2);
(*printFunc)(a,2); 


*stu1//是一个结构体指针,下面两种取值方式均可,意义相同
stu1->age;
(*stu1).age;


简便的定义函数指针方法:
typedef int (*compareFunc)(Student *s1,Student *s2);
compareFunc compare;//声明一个上句类型的函数指针


分配内存放在堆中:Class为类型
ourClass[i] = (Class *)malloc(sizeof(Class));


c语言中的面向对象思想


snprintf();
//
char str[5]={0,};
snprintf(str,sizeof(str),"0123456789");
printf("str=%s\n",str);//0123,只拷贝5-1个


char s1[10] = {0,};
char s2[10] = {0,};
int ret1,ret2;
ret1 = snprintf(s1,sizeof(s1),"%s","abc");
ret2 = snprintf(s2,4,"%s","aaabbbccc");
printf("aaabbbccc length=%d\n",strlen("aaabbbccc"));//length=9
printf("s1=%s,ret1=%d\n",s1,ret1);//s1=abc,ret1=3
printf("s2=%s,ret2=%d\n",s2,ret2);//s2=aaa,ret2=9


sprintf//起到格式化的作用
int sprintf(char *str, const char *format,...)
sscanf
char buf[10]=;
sscanf("123456","%s",buf);//起格式化的作用
printf("%s\n",buf);//输出123456


sscanf("123abcABC","%[1-9a-z]",buf);//123abc


结构体类型中只能声明变量,不能有函数;


函数指针的应用


怎么做库?
cc -c *.c//生成二进制
//ar -h//可查看命令
ar -rcs lib.a class.o//.o文件可多个,生成库函数到lib.a中


从.a文件开始执行代码
cc main.c -l class -L .


mac/用户/apple
待解决问题:
malloc;//分配内存空间
bzero(指针或数组名,n);//将指针或数组的前n个字节置零
strncpy(指针名或变量名,同左,n);//将右边的前n个数据拷贝到左边的变量中,剩下的保持不变







0 0
原创粉丝点击