易截截图软件、单文件、免安装、纯绿色、仅160KB

C深度解剖问题代码分析笔记2






<!--
@page { margin: 0.79in }
P { margin-bottom: 0.08in }
-->

是C深度解剖 P47的一系列关于define和typedef的用法:
/****以下是
#define
a int[10]

的各种用法,都报错
***
a[10]
a[10];
//**************
a[10]
a;
//**************
int
a[10];
//**************
int
a;
//**************
a
b[10];
//**************
a
b;
//**************
a*
b[10];
//**************
a*
b;
*********************************************/
/******以下是
typedef
int a[10]
;
的用法
*****************
//typedef
int a[10]定义了一种包含
10个
int的数组的类型
a[10]
a[10];//报错
,没有标识符
//******************************************
a[10]
a; //报错
,没有标识符
//******************************************
int
a[10]; //如常
,a[10]只是个普通的数组
//******************************************
int a;
//如常
,a只是个普通的变量
//******************************************
a
b[10];
//sizeof(a)为
40

//b[10] 是个二维数组,包含了
10*10个
int

//b[1][1]=2;//可以如常使用
//******************************************
a
b;
//b是个线性数组
//******************************************
a*
b;
//b
是个
a型指针
,可以如此操作:
b=malloc(sizeof(a));
int i;
for(i=0;i<10;i++)
{
(*b)[i]=i;

}
for(i=0;i<10;i++)
{
printf("%d
",*(*b+i)); //与
(*b)[i]一样
}
可能有人会认为这里的
a*
b; 是声明一个指针数组,类似于
int
*p[10]。
然而两者有本质的不同,简单来讲,前者是一个
40字节的框子,
b+1就会向前移
40字节框住下
40个字节;后者是个
4字节的框子,
p+1只会前移
4字节框住下
4个字节。
//******************************************
a*
b[10];
//b[10]是
10个
a型数据构成的数组,也就是说有
100个
int
int
i,j;
for(i=0;i<10;i++)
{
b[i]=(a*)malloc(sizeof(a));
for(j=1;j<11;j++)
{
(*(b[i]))[j]=i*10+j;
}
printf("\n");
}
for(i=0;


相关文档:

static详解(c/c++)

C/C++中Static的作用详述
一.在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。
(1)先来介绍它的第一条也是最重要的一条:隐藏。
当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是m ......

C#(C sharp)字符串和时间的相互转换

C#(C sharp)字符串和时间的相互转换。
 
一、DateTime –> string
时间类型转化成字符串类型,那是相当的简单,直接调用ToString()方法即可。如:
DateTime dt = DateTime.Now;
string dtStr = dt.ToString();
 
如果想对输出格式化,可以这么写:
dt.ToString("yyyy年MM月dd日");   ......

C编译的伪指令

一般变量定义在*.c文件中,而*.h文件中声明变量或函数名和符号名.
避面重复编译的解决方法:
    比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件都要调用同一个头文件去编译,重复编译会产生大量的声明冲突。解决这个问题的方法使用#ifndef, #endif, #endif。
 &nbs ......

C语言和JAVA一样,函数参数传递方式都为值传递方式

定义按值传递和按引用传递这两个术语是重要的。
按值传递意味着当将一个参数传递给一个函数时,函数接收的是参数的一个副本。因此,如 果函数修改了该参数,仅改变副本,而原始值保持不变。按引用传递意味着当将一个参数传递给一个函数时,函数接收的是参数的内存地址,而不是参数的副本。因 此,如果函数修改了该参数,调 ......

C Runtime Library 理解

以下摘自《edyang 语录》:
记住一个人,最重要的是记住他/她/它是男人/女人/东东,有没有贬过,有没有吻过,有没有咬过,名字记不住反而关紧要。 
C Runtime Library 
  大家在学过C++之后,可能对C Runtime Library这个名字有一定的误会,可能认为是运行时库是动态链接的,其实不然,想想C语言其实没有 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号