User Name Password Register
DaniWeb IT Discussion Community
All
What is DaniWeb IT Discussion Community?
You're currently browsing the C section within the Software Development category of DaniWeb, a massive community of 428,468 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 4,168 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our C advertiser: Programming Forums
Views: 419 | Replies: 6 | Solved
Join Date: May 2008
Posts: 3
Reputation: umeshjaviya is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
umeshjaviya umeshjaviya is offline Offline
Newbie Poster

pointer passing problem

  #1  
May 1st, 2008
I am a new guy in C. But I have read stuffs about Malloc, Realloc, how to pass pointers to the function...

If I am writing this code in single program, it works perfectly...but smart programmmer guide says write in compact form.

So with user defined function this is not giving me desired output. I dont know what mistake I am going in this simple program.

*pointer takes all the values correctly in function resize_long_pointer(...), but when it comes to main function it is not working..even it is crashing with large number for N_Cell_total....

Please Help me regarding this problem

Hear is my programe....

Code:
  1. #include <stdafx.h>
  2. #include <stdio.h>
  3. #include <malloc.h>
  4. #include <math.h>
  5. #include <stdlib.h>
  6.  
  7. void main()
  8. {
  9. size_t size;
  10. long *CF5,i;
  11. long N_Cell_total;
  12.  
  13. void resize_long_pointer(long *,long *);
  14.  
  15. N_Cell_total = 1;
  16.  
  17. CF5 = (long *)malloc((N_Cell_total + 2) * sizeof(long));
  18.  
  19. for(i=1;i<=N_Cell_total;i++)
  20. {
  21. CF5[i] = i;
  22. printf("\ntest1 %ld",CF5[i]);
  23. }
  24.  
  25. N_Cell_total = 20000;
  26.  
  27. resize_long_pointer(CF5,&N_Cell_total);
  28.  
  29. for(i=1;i<=N_Cell_total;i++)
  30. {
  31. printf("\ntest2 i %ld CF5 %ld",i,CF5[i]);
  32. }
  33.  
  34. }
  35.  
  36. void resize_long_pointer(long *pointer,long *add_size)
  37. {
  38. long int_tmp,i;
  39. size_t size;
  40.  
  41. int_tmp = *add_size;
  42.  
  43. printf("\nAdditional size :: %ld",int_tmp);
  44.  
  45. if( (pointer = (long *) realloc( pointer, (int_tmp + 2) * sizeof(long) )) == NULL)
  46. printf("\nPointer resizing problem :: add_size : %ld",*add_size);
  47.  
  48. for(i=1;i<= int_tmp;i++)
  49. {
  50. *pointer = i;
  51. }
  52.  
  53. printf("\ntest2 pointer[%ld] %ld ",i-1,pointer[i-1]);
  54. }
output::

Code:

test1 1
Additional size :: 100
function test1 i 1 pointer 1
function test1 i 2 pointer 2
.......
function test1 i 3 pointer 100
test2 pointer[100] 100
test2 i 1 CF5 1
test2 i 2 CF5 -842150451
test2 i 3 CF5 -33686019
.......
test2 i 100 CF5 43807
Last edited by Ancient Dragon : May 1st, 2008 at 8:39 pm. Reason: add code tags
AddThis Social Bookmark Button
Reply With Quote  

Only community members can participate in forum threads. You must register or log in to contribute.

DaniWeb C Marketplace
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)

 

Thread Tools Display Modes

Similar Threads
Other Threads in the C Forum

All times are GMT -4. The time now is 9:14 am.
Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC