Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
321 views
in Technique[技术] by (71.8m points)

c - Multi-dimensional Array Allocation

I am almost a beginner in C and I want to allocate a 2 dimensional array, change it, reallocate it and print it. Both of the answers with the code were useful.Now the code is:

    main()
    {
     int i, j, L , **lp ;
      scanf("%i" , &L );
      lp = calloc(L , sizeof(*lp) );
      for(i=0 ; i<L ; i++)
      lp[i] = calloc( L , sizeof( *(lp[i])) );

      for(i=0 ; i<L ; i++)
      {
          for(j=0 ; j<L ; j++ )
          {
           lp[i][j]=0;
           printf("%i	" , lp[i][j] );
          }
       printf("
");
      }
       free( lp );
       return(0);
     }
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

A lot of things are wrong.

1. The for loop

{   for(j=0 , j<0 , j++ )


for (initialization_expression;loop_condition;increment_expression){..}

If any of them is missing, leave them blank, but you do need the semicolons.

Even then j=0;j<0 makes no sense as a condition.

2. Misspelling

You misspelled lp as pl within the second for-loop.

3. main

You did not specify a return type for main. This isn't being reported but is the old-style and shouldn't be used anymore.

4. Dynamic allocation

That isn't the way to allocate a 2-D array dynamically.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...