
C
badgirl
脚踏实地靠自己
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
(x&y) + ( (x^y)>>1 )证明
拆分,分别(11,10,00)讨论都满足(x+y)/2对于位运算求两个数的平均值问题,(整形数据)int average(int x,int y){return ( (x&y) + ( (x^y)>>1 ) );}给出两个整数,求出结果。刚开始看到这道题的做法就是x和y转换为二进制,然后计算出结果。在没有办法的情况下这样做也可以得出结果。转载 2013-05-20 10:58:56 · 832 阅读 · 0 评论 -
一维数组名取地址用法
int a[] = {1,2,3,4,5};int *ptr = (int*)(&a+1);// 数组名本身就是指针,再加上个&就变成了双指针,这里的双指针就是指二维数组,加1,就是数组整行加一行,ptr指向a的第6个元素printf("%d %d",*(a+1),*(ptr-1));// 结果:2,5转载 2013-05-15 11:05:15 · 548 阅读 · 0 评论 -
指向二维数组的指针用法
int v[2][10]={{1,2,3,4,5,6,7,8,9,10},{11,12,13,14,15,16,17,18,19,20}};int (*a)[10]=v;coutcout*(*a+1)//相当于*(*(a+0)+1) a[0][1]*(a[0]+1)// 相当于*(*(a+0)+1) a[0][1]*(a[1])// 相当于*(*(a+1)+0) a[1原创 2013-05-15 09:21:40 · 377 阅读 · 0 评论 -
C 语言运算符表
附录A C 语言运算符表 运算符按照优先级大小由上向下排列,在同一行的运算符具有相同优先级。第二行是所有的一元运算符。 运算符 解释 结合方式 () [] -> . 括号(函数等),数组,两种结构成员访问 由左向右 ! ~ ++ -- + - * & ( 类型) sizeof 否定,按位否定,增量,减量,正负号, 间接,取地址,类转载 2013-05-15 09:55:03 · 470 阅读 · 0 评论 -
int*((*b)[10])
int*((*b)[10])就是int *(*b)[10];无需加那个括号,[]优先级比*优先级高。既然优先级高,所以整个式子这样写更清晰:int* (*b)[10];声明了一个二维数组的指针,指向类似 a[N][10]这样的数组,N可以是任何数数组 a[N][10]里面的成员类型是 int*转载 2013-05-14 16:58:23 · 454 阅读 · 0 评论 -
函数指针数组double(*f[10])();
double(*f[10])();解释:f是一个数组,f有10个元素,元素都是函数的指针,指向的函数类型是没有参数且返回值为double的函数。double sin(void){ return 0;}double cos(void){ return 1;}方法1:double (*f[])(double)= {sin,asin,cos,acos,tan,NULL};方法2: d原创 2013-05-14 16:48:28 · 616 阅读 · 0 评论 -
指针与函数
int (*(*f)(int,int))(int)可以理解为: typedef int (*B)(int);B (*f)(int, int);使用方法:int g(int x) {return 0;}int (*f(int x, int y))(int)// 处理完自身数据,返回另一个函数名{return g;}int (*(*h)(int, i原创 2013-05-14 15:41:31 · 345 阅读 · 0 评论 -
float(**def)[10] 如何理解
首先,要区分开float (*def)[10]和float *def[10],前者是一个数组指针,指向某个有十个元素的数组;后者是指针数组,数组有十个元素,每个元素都是指向float变量的指针。弄清了这点,就很好理解float (**def)[10]了,即def是一个指针,它指向一个数组指针,而那个数组指针则指向一个有十个float变量的数组。例如: float a[2][2]={1,原创 2013-05-14 16:02:45 · 828 阅读 · 0 评论 -
包含指针的结构体,指针指向自己
struct S {int i;int * p;};int _tmain(int argc, _TCHAR* argv[]){S s;int *mm=&s.i;mm[0]=4;mm[1]=3;// 赋值printf("%d",mm[1]);s.p=mm;printf("%x\n",s.p[1]);// s.p[1]相当于*原创 2013-05-14 11:15:02 · 628 阅读 · 0 评论 -
指针_const_函数总结
int (*fun)();// 函数指针 int * fun();// 函数返回指针int fun(int * const p);// 指针为常量int fun(const int * p);// 指针指向常量 int fun (const int * const p);// 指向const的const指针原创 2013-05-14 11:27:12 · 410 阅读 · 0 评论 -
struct 结构体编译器内存对齐
struct B {private:bool m_bTemp;int m_nTemp;bool m_bTemp1;};struct C{private:int m_nTemp;bool m_bTemp;bool m_bTemp1;};// sizeof(B),sizeof(C)的值?32位机器,数据以4字节为对齐方式// 如果2个数据所占转载 2013-05-21 17:18:23 · 1322 阅读 · 0 评论 -
sizeof 类虚函数
#include "stdafx.h"#include #include using namespace std; class Base{public: Base(){cout"Base-Ctor" ~Base(){cout"Base-Dtor" virtual void f(int){cout"Ba转载 2013-05-25 17:27:28 · 377 阅读 · 0 评论 -
用一个宏定义FIND求一个结构体CTYPE里某个变量CNUM相对了CTYPE的编移量。
用一个宏定义FIND求一个结构体CTYPE里某个变量CNUM相对了CTYPE的编移量。 如:stuct student { int a; char b[20]; double ccc; } 则: FIND(student,a); //等于0 FIND(student,b);//等于4 #define FIND( struc, e ) (size_t)&(((转载 2013-05-20 20:53:05 · 530 阅读 · 0 评论 -
a,b两数交换,不用if,?,switch,或其他判断语句,找出两数中较大的那个.
int a = 3;//3int b = 8;// 8// int m = (a+b+abs(a-b))/2;方法1// 方法2 int c= a-b; char * strs[2]={"a large ","b large "}; c= unsigned(c)>>(sizeof(int)*8-1);// c = (c>>(sizeof(int)*8-1))转载 2013-05-20 14:03:19 · 500 阅读 · 0 评论 -
printf 格式化输出符号详细说明
转自http://blog.youkuaiyun.com/xiexievv/article/details/6831194关于long long类型的输入输出:"%lld"和"%llu"是linux下gcc/g++用于long long int类型(64 bits)输入输出的格式符。而"%I64d"和"%I64u"则是Microsoft VC++库里用于输入输出__int64类型的转载 2013-06-19 10:05:42 · 1020 阅读 · 0 评论