Chinaunix首页 | 论坛 | 博客
  • 博客访问: 586446
  • 博文数量: 201
  • 博客积分: 3076
  • 博客等级: 中校
  • 技术积分: 2333
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-02 19:44
文章分类

全部博文(201)

文章存档

2010年(118)

2009年(83)

我的朋友

分类:

2010-05-14 19:46:22

1. int a[] = {1,2,3};
printf("%d\n", 2[a]);  //a[2]

2. int a[10][20]
i = a[2][3];
i = *(a[2]+3);
i = *(*(a+2)+3);
int (*p)[20] = a;

3. int a[10];
int *p = a;
int *q = &a;  //区别
int (*r)[10] = &a;

4. extern char *p;
extern char p[]; //区别



char a[] = "/etc";  /*file1*/
extern char a[];    /*file2*/

char *a = "/etc";
extern char *a;

5. 优先级:
(),  [],  ->,  .
单目
双目(算术,移位,关系(==, != 比其他关系运算符低),逻辑)
条件(?:)
赋值
逗号

逻辑运算符:& > ^ > | > && > ||   ; 

6. extern int a;
则a 必须在某个地方被定义,可以在其他源文件中,也可以在同一源文件中。

7.
int func(void) [5];

func是一个返回值为具有5个int元素的数组的函数。但C语言的函数返回值不能为数组,这是因为如果允许函数返回值为数组,那么接收这个数组的内容的 东西,也必须是一个数组,但C语言的数组名是一个右值,它不能作为左值来接收另一个数组,因此函数返回值不能为数组。

int func[5](void);

func是一个具有5个元素的数组,这个数组的元素都是函数。这也是非法的,因为数组的元素除了类型必须一样外,每个元素所占用的内存空间也必须相同,显 然函数是无法达到这个要求的,即使函数的类型一样,但函数所占用的空间通常是不相同的。






-----------------------------------------------------------------------------------------------------------
    char *d = "123\04567890";
char *e = "123\0'4567890";
阅读(580) | 评论(0) | 转发(0) |
0

上一篇:数组与指针

下一篇:C89和C99标准对比

给主人留下些什么吧!~~