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;
相关文档:
学习C语言时,用字符串的函数例如stpcpy()、strcat()、strcmp()等,要包含头文件string.h
学习C++后,C++有字符串的标准类string,string类也有很多方法,用string类时要用到string.h头文件。
我现在看vc的书上也有CString类,这个要包含什么,怎么用?
我现在很迷惑,这两个 string.h有什么区别。是怎么回事
且看 ......
今天解答一些同学在学开发过程中的普遍问题,就是如何学好一门语言?
我是这样来理解的,要做任何事物,首先要分析为什么要做,只有把核心的,内心的原因找到才能把一件事情做好,否则,你花再多的学费学某种技术仍然会一无所或,从我个人的成长过程来将我是从97年接触计算机,开始学的一踏糊涂,不知道老师在讲什么,不知道学了会有什 ......
要写好C语言程序,最重要的当然是把要解决的问题分析清楚,设计好解决问题的方案和通过计算实现求解的过程,对问题的求解过程进行科学的结构化的分解。在此基础上进一步考虑如何写程序的时候,下面的建议可能有所帮助。
这些建议中有些是一般性的,不仅仅对C语言程序设计有效;也有些是特别针对C语言程序设计的。这个表还 ......
C标准库头文件 assert.h
@函数名称: assert
函数原型: void assert(int exp)
函数功能: 诊断类:表达式结果正确性测试并可使程序中止
函数返回:
参数说明: 将错误信息输出到流stderr中,如果exp为0,则中止程序执行.exp-表达式
所属文件: & ......