易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 :

【转】C的另一重要数据结构bit fields

今天看K&R的书的时候顺便温习了C的另一重要数据结构bit-fields,我想bit-fields在编写底层驱动
驱动程序的时候应该比较好用,它可以绕开"&"和"|"进行位操作,而且更加节约内存空间。废话不多说
了,还是先来看看它的真面目吧:
bit-field来源:
bit-field是为了节约存储空间而创造的一种数据结构(to pack several objects into a single
machine word)
 
bit-field用途:
Externally-imposed data formats,such interfaces to hardware
devices,also often
require the ability to get a pieces of a word
 
定义方法:
struct (tag) {
bit-field list ~~~
} bit-field variable list;
 
由定义方法可见,bit-field也是以structure的形式组织起来的数据结构,只不过是以二进制进行分发
的而已。其中bit-field list表示方法: type fieldnamme:width;
width:field的宽度,以bit
表示,还是举个例子来看吧:
 
struct bf{
unsigned int is_keyword:1;
unsigned int is_extern:1;
unsigned int is static:1;
}flags;
 
定义了一个bit-field变量flags,它包括3个1-bit的field,访问bit-field其 ......

C的位运算符

与 &:  任何位用&运算与0结合结果为0,与1结合结果为其本身;
或 | :  任何位用|运算与0结合结果为其本身,与1结合结果为1;
异或  ^ :  任何位用^运算与0结合结果为其本身,与1结合则取反; ......

c 调用 matlab engine 自定义函数

设置:
1. Tools/Projects and Solutions/VC ++ Directories
    Inlcude files: C:\Program Files\MATLAB\R2009a\extern\include
    Library files: C:\Program Files\MATLAB\R2009a\extern\lib
2. Property
    Configuration Properties/Linker
    General: Additional Library Directories: "C:\Program Files\MATLAB\R2009a\extern\lib\win32\microsoft"
    Input: Additional Dependencies: libmx.lib libmat.lib libeng.lib
   
#include
"stdafx.h"
#include
#include
#include
#include
fun_XY.m file
function Z = fun_XY(X,Y)
Z = X*Y;
<stdio.h><stdlib.h><conio.h>"engine.h"
int
main(int argc, char
**argv)
{
double
X[3][2] = {{1,4},{2,5},{3,6}};
double
Y[2][2] = {{1,2},{3,4}};
int
succeedNotFlag = 1;
Engine *ep;
if
(!(ep = engOpen(NULL)))
{
exit(1);
}
engSetVisible(ep,1);
mxArray *xx = mxCreateDoubleMatrix(3,2,mxREAL);
mxArray *yy = mxCreateDoubleMatrix(2,2,mxREAL);
......

简述C和C++程序员学习历程

哈哈!有幸在某网站发现这篇文章,读罢,觉得蛮有道理,发来大家一起共勉之    
总是被同学们问到,如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复。 
' J$ |0 ?! p% w" t5 D6 D: c9 |0 B
  一家之言,欢迎拍砖哈。 
  1、可以考虑先学习C. 
/ U$ X+ X/ P; Y: h" I
  大多数时候,我们学习语言的目的,不是为了成为一个语言专家,而是希望成为一个解决问题的专家。做一个有用的程序员,做一个赚钱的程序员。我们的价值,将体现在客户价值上,而不是语言写得好不好看。 9 l( K9 ?  S/ v4 M  J4 s0 Z: {
. z. v. ~) V4 ]" ^& t
  C++是C的一个面向对象的解释,C++为C扩充了大规模工程应用,复杂的系统结构的组织和掌控方法,但是,我认为,C++骨子里还是C的。 % ~5 b8 @* x( t, z8 {+ e! L* Z
: e& r8 `; ~: \7 m6 `6 g/ m
  毕竟,解决具体问题,每个函数内部,都是用C的方式写程序,还是面向过程的。 0 h  a" n9 G+ p, ]6 R
  X4 o/ Q3 z% Z0 s, h$ A
  因此,想要学习好C++,我的建议,先学习C,先学解决问题的能力,再讨论解 ......

简述C和C++程序员学习历程

哈哈!有幸在某网站发现这篇文章,读罢,觉得蛮有道理,发来大家一起共勉之    
总是被同学们问到,如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复。 
' J$ |0 ?! p% w" t5 D6 D: c9 |0 B
  一家之言,欢迎拍砖哈。 
  1、可以考虑先学习C. 
/ U$ X+ X/ P; Y: h" I
  大多数时候,我们学习语言的目的,不是为了成为一个语言专家,而是希望成为一个解决问题的专家。做一个有用的程序员,做一个赚钱的程序员。我们的价值,将体现在客户价值上,而不是语言写得好不好看。 9 l( K9 ?  S/ v4 M  J4 s0 Z: {
. z. v. ~) V4 ]" ^& t
  C++是C的一个面向对象的解释,C++为C扩充了大规模工程应用,复杂的系统结构的组织和掌控方法,但是,我认为,C++骨子里还是C的。 % ~5 b8 @* x( t, z8 {+ e! L* Z
: e& r8 `; ~: \7 m6 `6 g/ m
  毕竟,解决具体问题,每个函数内部,都是用C的方式写程序,还是面向过程的。 0 h  a" n9 G+ p, ]6 R
  X4 o/ Q3 z% Z0 s, h$ A
  因此,想要学习好C++,我的建议,先学习C,先学解决问题的能力,再讨论解 ......

C指针臆想

指针,众所周知,时为一内存地址.抛开OS级别或更低的硬件级别不说,仅对应用内的使用进行小小的臆测讨论.
首先,在应用内,用malloc申请到的一块地址应该是连续的(猜测,逻辑上连续,实际上物理如何分布不予关注).
其次,数据存在在内存中都是以2进制形式存放.不存在数据类型,因此,对内存数据的操作,只要遵循进出类型一致即可.
此处的进,是指将数据存放到内存中,如存进一个int型的数据,读取的时候按int读取即可,存储一个char*的数据,按char*读取即可.
#define mAlloc(p,size)\
{\
errno=0;\
if((p=(char*)malloc(sizeof(char)*size)))==null){\
printf("malloc error[%d]\n",errno);\
exit(-1);\
}\
memset(p,0,sizeof(char)*size);\
}\
#define setInt(p,v) (*(int*)(p)=v)
#define setStr(p,v,size) strcpy(p,v)
int main()
{
char *p;

mAlloc(p,10);
setInt(p,100);
printf("int:%d\n",*(int*)p);

setStr(p+sizeof(int),"abc");
printf("str:%s\n",p+sizeof(int));

return 1;

......

C/C++ 学习笔记[03].去掉C风格的注释

网上搜索了一大堆去掉/*和*/之间注释的代码,就像<The C Programming Language>练习1-23里有人说的一样
大部分都会被以下的程序broken,这个功能看起来简单,实际上很有难度.网上实现的代码,除了我找到的一个用文件指针实现的没有问题外,其余的都存在各种bug,不信的话就用以下的程序测试一下:-),当然这个程序也不够完善.
还是有限状态自动机实现起来更严谨也容易理解得多:
/* krx123tp.c - a test program to serve as input to krx123*.c
*
* This is a shameless copy of Ben Pfaff's solution, to which I have
* added a few extra statements to further test the candidate programs
* for this exercise. As Ben says, this program already contains lots
* of examples of comments and not-quite-comments. I've just made it
* a little tougher.
*
*/
/* K&R2 1-23: Write a program to remove all comments from a C program.
Don't forget to handle quoted strings and character constants
properly. C comments do not nest.
This solution does not deal with other special cases, such as
trigraphs, line c ......

C/C++ 学习笔记[03].去掉C风格的注释

网上搜索了一大堆去掉/*和*/之间注释的代码,就像<The C Programming Language>练习1-23里有人说的一样
大部分都会被以下的程序broken,这个功能看起来简单,实际上很有难度.网上实现的代码,除了我找到的一个用文件指针实现的没有问题外,其余的都存在各种bug,不信的话就用以下的程序测试一下:-),当然这个程序也不够完善.
还是有限状态自动机实现起来更严谨也容易理解得多:
/* krx123tp.c - a test program to serve as input to krx123*.c
*
* This is a shameless copy of Ben Pfaff's solution, to which I have
* added a few extra statements to further test the candidate programs
* for this exercise. As Ben says, this program already contains lots
* of examples of comments and not-quite-comments. I've just made it
* a little tougher.
*
*/
/* K&R2 1-23: Write a program to remove all comments from a C program.
Don't forget to handle quoted strings and character constants
properly. C comments do not nest.
This solution does not deal with other special cases, such as
trigraphs, line c ......
总记录数:40319; 总页数:6720; 每页6 条; 首页 上一页 [368] [369] [370] [371] 372 [373] [374] [375] [376] [377]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号