c语言学习2
关于原码,反码,补码:
变量以补码的形式存储在系统中。
原码为变量的二进制码,第一位为符号位,表示正负。
正数的反码为原码本身,负数的反码为符号位后所有数取反。
正数的补码码为原码本身,负数的补码为反码加1.
关于指针
以”类型* 名称“的形式声明。赋值时不能加为a=&b,a为指针,b为指向对象。使用时:取地址时加上&,取指针指向对象时加*
#include <stdio.h>
int main()
{
int a;
int *a_p,**a_pp;
a=3;
a_p=&a;
a_pp=&a_p;
printf("%d ",a);
printf("%d ",*a_p);
printf("%d ",**a_pp);
}
此处输出3 3 3 。a为3,a_p指向a,a_pp指向a_p.
函数指针:
函数名就个地址(整数),它代表函数在代码段中所处的位置。
函数指针就是指向函数的指针,它里面存储是函数在代码段中所处位置(函数名);
typedef 返回值 (*函数指针)(类型1 参数名1,类型2 参数名2…);
函数指针 fp;
使用了回调模式的库函数:
// 快速排序
void qsort(void *base, size_t nmemb, size_t size,
int(*compar)(const void *, const void *));
// 二分查找
void *bsearch(const void *key, const void *base,
size_t nmemb, size_t size,
int (*compar)(const void *, const void *));