我正在实现需要指针数组的基数排序,为了避免分段错误,我必须将其初始化为 NULL。
当我尝试:struct Node *Bucket[10] = NULL
但它给出了:error: invalid initializer
所以,我的老师建议:struct Node *Bucket[10] = {0}
所以我的问题是 {0} 和 NULL 有什么区别,我也尝试过:
struct Node *Bucket[10] ;
for(int i=0 ; i<10 ; i++)
{
Bucket[i] = NULL ;
}
{0} 与此 for 循环有何相同之处
编辑1:
还有一个额外的问题,为什么我们将 Bucket[0] .. Bucket[9] 设为 NULL 以及它如何防止分段错误。
void Radix_Sort(int *Arr)
{
int max ;
max = Max_element_in_array(Arr);
struct Node *Bucket[10] = {0} ;
for(int exp = 1 ; max / exp > 0 ; exp*=10)
{
int k=0 ;
for(int i=begin ; i { Append_a_linked_list(&Bucket[(Arr[i]/exp)%10],Arr[i]); } for(int j=0 ; j<10 ; j++) { while( Bucket[j] ) { Arr[k++] = Delete_first_node(&Bucket[j]); } } } }