Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1975580
  • 博文数量: 185
  • 博客积分: 10707
  • 博客等级: 上将
  • 技术积分: 1777
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-19 17:31
文章分类

全部博文(185)

文章存档

2014年(1)

2012年(6)

2011年(27)

2010年(13)

2009年(75)

2008年(63)

分类: LINUX

2008-12-13 14:44:03

1.声明变长数组
在VC中,对于数组的声明,只能是常量,而不能够是变量.而在gcc中如下代码却是可以成功运行的
代码:
#include

int main()
{
int i, j;
scanf("%d%d", &i, &j);
int a[i][j];
printf("%d\n", sizeof(a));
return 0;
}
在这里, 可以在运行的时候再决定这个数组的大小为多少, 就避免了使用malloc在堆中分配这种方法.

2.为数组赋值
如果声明了一个100000长度的整形数组,需要将这个数组的最后一位赋为10,而其余位全部赋为0,如果在VC中,则需要使用循环的方式将前99999赋为0,然后再将最后一位赋为10,而使用gcc则可以很好地解决这个问题. 如下:

代码:
#include

int main()
{
int i;
int array[100000] = {[99999] = 10};
for (i = 0; i < 100000; i++)
printf("%d \n", array[i]);
return 0;
}
此时,除了最后一位为10,其余位全为0.

3.在C程序中在main()函数之前运行的函数
通过gcc的函数的属性,可以设置某些函数在main()函数之前运行.如:
代码:
#include


void first() __attribute__((constructor));
void first()
{
printf("This is function %s\n", __FUNCTION__);
main();
return ;
}

int main()
{
printf("This is function %s\n", __FUNCTION__);
return 0;
}

通过设置函数属性为constuctor, 可使其在main()之前运行.
阅读(1351) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~