当前位置: 代码迷 >> C语言 >> 关于动态内存分配的问题
  详细解决方案

关于动态内存分配的问题

热度:173   发布时间:2006-08-13 11:13:33.0
恩.是又粗心了.试过了.果然没错

可是...最近看C++看的.有点连带C了.C++不允许..可是...我记得....我再想想....
----------------解决方案--------------------------------------------------------
#include <stdio.h>
int main()
{
int const c=10;
void const *a=&c;
int const *b=a;
printf("%d",*b);
}

这样子..原来可以啊...?

.............
----------------解决方案--------------------------------------------------------
这样可以。这样似乎没什么,只是用指针a作了一个过渡而已,因为任何类型的指针都可以转换为(void *)型,而指针b只

是和指针a一样,指向同一个内存地址,也就是c的地址了。
----------------解决方案--------------------------------------------------------
你举的例子运行不了啊!
----------------解决方案--------------------------------------------------------

程序大体上没问题,都是些小毛病.修改后:

#include <stdio.h>
#include <stdlib.h>
int compare_integers( void const*a,void const *b );
int main(int argc, char *argv[])
{
int *array;
int n_values;
int i;

printf("how many values are there?\n");
if( scanf("%d",&n_values)!=1||n_values<=0 ){
printf("Illegal number of values.\n");
exit(EXIT_FAILURE);
}

array=malloc(n_values*sizeof(int));
if( !array ){
printf("Can't get memory for that many values.\n");
exit(EXIT_FAILURE);
}

printf("please input these numbers:\n");
for( i=0;i<n_values;i+=1 ){

if( !scanf("%d",&array[i]) ){
printf("Error reading value #%d\n",i);
free(array);
exit(EXIT_FAILURE);
}
}

qsort( array ,n_values ,sizeof(int),compare_integers );

for( i=0;i<n_values;i++)
printf("%d\n",array[i]); getch();
free(array);
return EXIT_SUCCESS;

system("PAUSE");

return 0;
}
int compare_integers( void const*a,void const *b )
{
register int const *pa=a;
register int const *pb=b;
return *pa>*pb?1:*pa<*pb?-1:0;
}

[此贴子已经被作者于2006-8-15 9:13:55编辑过]


----------------解决方案--------------------------------------------------------