Introduction to Pointers | C Programming Tutorial

Поділитися
Вставка
  • Опубліковано 19 гру 2024

КОМЕНТАРІ • 155

  • @dimitrijedjokic3387
    @dimitrijedjokic3387 2 роки тому +90

    I studied computer science in high school, and we were learning about pointers a bit, but I never really got hang of what they represent, now I'm at faculty, again learning about pointers and this video helped me more than 5 hours of my class, really glad I stumbled across you, great video, great explanation.

    • @PortfolioCourses
      @PortfolioCourses  2 роки тому +8

      Thank you very much for the kind feedback Dimitrije! I'm really glad to hear that this video helped you out, and that you enjoyed the explanation. Pointers are super tricky I think, many people tell me they find them to be the hardest part of understanding C. 🙂

  • @TheHset
    @TheHset Рік тому +16

    I'm so glad they had us *take a basic computer science course prior to our C course. I think why most people find pointers confusing is because they don't know how computer memory works.

    • @PortfolioCourses
      @PortfolioCourses  Рік тому +1

      That's very true, it's very difficult to understand lower level programming languages like C without some idea as to how computers are working at the hardware level (at least, the big picture anyways). :-)

  • @PhilemonEyramOcloo
    @PhilemonEyramOcloo Рік тому +8

    simplest and best explanation on pointers I've found thus far....You're a life saver

  • @tathagataghosh1609
    @tathagataghosh1609 10 місяців тому +3

    Hi sir, I am from India, There are many indian youtube channels teaching C programming , though I found your channel most helpful. Thanks for uploading this kind of detailed videos.

  • @Blank271
    @Blank271 Рік тому +15

    Thanks so much for these tutorials, it's rare to find someone who is so clear and so well organized, doesn't waste any time and also has such a huge output of free material. Thanks.

    • @PortfolioCourses
      @PortfolioCourses  Рік тому

      You're very welcome, thank you for sharing this positive feedback, I'm really glad that you enjoy the material! :-)

  • @davidrbuni
    @davidrbuni 5 місяців тому +2

    Your videos are absolutely perfect! Clear, to the point, easy to understand explanations, tons of examples, sweet voice, clean workspace, man I just wish I had found your channel sooner.

    • @PortfolioCourses
      @PortfolioCourses  5 місяців тому +1

      I’m glad you’re enjoying the videos, thank you for the kind feedback! :-)

  • @wlcrutch
    @wlcrutch Рік тому +11

    Dude…your videos are on point. Having just finished an intense course in C++ at my university but being actually more interested in C, this is a great way to both recap similar concepts that exist in both languages as well as getting started in C

    • @PortfolioCourses
      @PortfolioCourses  Рік тому +1

      That’s awesome, thank you for the positive feedback, I’m really glad to hear the videos are helping you recap concepts and get started with C! :-)

  • @lambdadotjoburg
    @lambdadotjoburg 5 місяців тому +2

    I think it's worth noting that the pointer-variable swap technique would come in handy if the structures being swapped are larger than long int data type

  • @nkurikiyimanaaimable9004
    @nkurikiyimanaaimable9004 Рік тому +2

    Just wow ,.. I've just started learning c, but your tutorials are just exceptional in comparison to what i've been watching.. it just amazes me how your channel is underrated..

    • @PortfolioCourses
      @PortfolioCourses  Рік тому

      I'm really glad that you're enjoying the content!!! :-) And thank you very much for the kind feedback, that is really motivating for me to hear that.

  • @rouisaek
    @rouisaek 3 місяці тому +1

    Very useful tutorial about pointers specially the `malloc` example for creating array size in the runtime

  • @nine_digit
    @nine_digit 2 роки тому +6

    I am taking C programming class, and your videos are so helpful. thank you for sharing such great content.

    • @PortfolioCourses
      @PortfolioCourses  2 роки тому

      You’re very welcome! :-) Thanks for sharing this feedback, I’m really glad to hear the videos are helping you out!

  • @mumbaiverve2307
    @mumbaiverve2307 9 місяців тому

    Possibly the best set of videos on C. Please consider doing an episode on assert() .

  • @nyeowsz
    @nyeowsz Рік тому +1

    This video is very great. Can't believe I understood pointers and some memory related lessons. Thank you so much.

  • @tokuumeiii8792
    @tokuumeiii8792 10 місяців тому +2

    this explanation is a real life saving , thank you for your effort 😊😊

  • @AxelWerner
    @AxelWerner Рік тому +1

    THANK YOU!! You are one of VERY FEW who understood how to use the SCREEN AREA properly for a screen presentation. Nice layout, easy to read font size. DOUBLE THANKS TO YOU ! :) Next... i dont know how many videos and articles about pointers in C i have seen and read...i still had trouble grasping it, since i could not align "a data type" with a plain "memory address", since these things do have nothing to do with each other to my understanding. BUT now i can see why/when the "type" starts to become useful in conjunction with a plain memory-address pointed to.

    • @PortfolioCourses
      @PortfolioCourses  Рік тому

      You’re very welcome Axel, I’m glad you enjoyed the presentation style and that the video was able to help you learn about pointers! :-)

  • @snorri2854
    @snorri2854 2 роки тому +1

    This video is what i was looking for ! , Thank you sir i really learnt a lot watching this , much love from egypt

    • @PortfolioCourses
      @PortfolioCourses  2 роки тому

      You’re very welcome! :-) I’m so glad to hear you learned a lot watching it, much love back at you from Canada!

  • @lawniczakjohn
    @lawniczakjohn Рік тому

    Came back to brush up, love this video!

  • @user-kv4gj9jp4h
    @user-kv4gj9jp4h Рік тому

    This really helped me understand pointers when other resources didn’t thank you so much

    • @PortfolioCourses
      @PortfolioCourses  Рік тому

      You’re very welcome, I’m so glad to hear this video helped you to understand pointers! :-)

  • @meridiasbeacon7669
    @meridiasbeacon7669 Рік тому

    Incredibly helpful, I was having trouble wrapping my head about how these work but this video cleared it all up.

    • @PortfolioCourses
      @PortfolioCourses  Рік тому +1

      Awesome, I'm happy the video was able to help you out! :-)

  • @ابوأحمد-ث9ت4ض
    @ابوأحمد-ث9ت4ض Рік тому

    Man I bought c course, your course 20x better

  • @djelasrca8091
    @djelasrca8091 Рік тому +1

    Better than paid Udemy course. As clear as day!

  • @idomark1238
    @idomark1238 Рік тому

    I am passing the first semester in my school thanks to u...thanks for the free content, its very helpfull, keep i up :)

    • @PortfolioCourses
      @PortfolioCourses  Рік тому +2

      You're welcome Ido! :-) And thank you very much for sharing that positive feedback with me. A big part of the reason why I love making these videos is that they might be able to help students like you, so that means a lot to me that the videos are helping you out!

  • @ipadeolabamidele
    @ipadeolabamidele Рік тому

    The best video ever! It has put an end to all my curiosities and given clarifications to all confusions! Thank you thank you thank you thank you sir! The examples you gave really shed enough light! God bless you hugely sir❤❤❤🙏🙏🙏🙏

  • @Mnogojazyk
    @Mnogojazyk 2 роки тому +3

    This certainly helps in my understanding of pointers. I think one of the reasons that pointers have flummoxed me over the years is the notation: Using an asterisk to signal both a pointer and the mathematical operation for multiplication is confusing.

    • @PortfolioCourses
      @PortfolioCourses  2 роки тому +2

      I agree the notation for pointers is confusing. 🙂 I also don't like how the * operator is used to both declare a pointer and as the dereference operator. I'm not even sure I like the name "pointers", I've found people seem to understand them better when they're called "memory addresses".

    • @Mnogojazyk
      @Mnogojazyk 2 роки тому +1

      @@PortfolioCourses, I guess I’ll call them memory addresses and regard pointer as a nickname. :-)

    • @PortfolioCourses
      @PortfolioCourses  2 роки тому +1

      @@Mnogojazyk Hahaha 🙂

  • @samisiddiqi5411
    @samisiddiqi5411 Рік тому

    Your video was my "AHA moment" for pointers and malloc lol.

    • @PortfolioCourses
      @PortfolioCourses  Рік тому

      Awesome I'm glad to hear that Sami, congratulations on the 'aha moment'! :-)

  • @stana1980
    @stana1980 11 місяців тому

    Thanks for the explanation really helped me understanding the concept
    Thanks

  • @lovromilinovic2835
    @lovromilinovic2835 Рік тому

    Great explanation, helped me a lot. I'll be watching more of your videos for sure. Cheers!

  • @Zraeicro
    @Zraeicro 8 місяців тому +2

    I'm glad youtube existed

  • @seanl8930
    @seanl8930 2 роки тому

    Your video's are so amazing. I am studying for a test and some of the examples from my class are in here and you explained them to me just like my professor did, or better. Thank you for making such amazing help when you need it at a moments notice.

    • @PortfolioCourses
      @PortfolioCourses  2 роки тому

      You're welcome Sean, I'm very glad to hear these videos are helping you out! :-)

  • @ABDELMUNIEMOMARSULIMANAHMEDTEE

    man, your are the best, these video rescue me.

    • @PortfolioCourses
      @PortfolioCourses  Рік тому

      I’m really glad you’re enjoying the videos Abdelmuniem, thank you for sharing this kind feedback! :-)

  • @holipop
    @holipop 9 місяців тому

    this video changed my life

  • @HahahaGamingz
    @HahahaGamingz Рік тому

    You sir earned my respect. I watched alot of your content already. Can`t offer more than a sub , but all my thanks !

    • @PortfolioCourses
      @PortfolioCourses  Рік тому

      Thank you so much for watching the videos and subscribing Kyoshi! :-) Another thing you could do to help the channel if you like is sharing the channel with others (classmates, friends, social media, etc).

  • @sidneyrobinson5719
    @sidneyrobinson5719 Рік тому +1

    Thank you so much for this video! Could you explain what -> has to do with pointers? Is it a different way to express the star * operator?

    • @PortfolioCourses
      @PortfolioCourses  Рік тому +1

      You're welcome Sidney! :-) And -> is called the arrow operator, it's for working with pointers to structs, and in some sense it is a bit like the * operator yes, it's covered in this video here: ua-cam.com/video/w5XM1N7hLgc/v-deo.html

    • @sidneyrobinson5719
      @sidneyrobinson5719 Рік тому

      @@PortfolioCourses This helps thank you!

  • @chillbro2275
    @chillbro2275 4 місяці тому

    Thank you. I like the use of pointers for dynamically allocating memory. I still don’t get why one would have a function change the value of a variable that is not brought into scope for that function.

    • @PortfolioCourses
      @PortfolioCourses  4 місяці тому

      Sometimes we have things like data structures that persist across a series of function calls, and what the functions work with is a pointer to that data structure in order to access it. So for an example: ua-cam.com/video/YjxKYxpf51E/v-deo.html. It would typically be something that's pretty important to the program, to have that same state be accessed by multiple functions.

  • @itsame2649
    @itsame2649 2 роки тому

    for the example at time 14:18, how does *a and *b know to reference the memory address of x and y? I thought we would first have to define that *a points to x and that *b points to y.

    • @PortfolioCourses
      @PortfolioCourses  2 роки тому +2

      It's because when we call swap we have: swap(&x, &y);
      That will set a to point to x and b point to y. :-)

  • @raquelbraunschweig2938
    @raquelbraunschweig2938 2 роки тому +2

    thank you for the class!

  • @neviswarren
    @neviswarren 7 місяців тому

    Thank you. This is very helpful.

    • @PortfolioCourses
      @PortfolioCourses  7 місяців тому +1

      You’re very welcome, I’m glad it was helpful for you! :-)

  • @JH-ux1re
    @JH-ux1re 2 роки тому +3

    You’re the best for sure!

  • @edward3105
    @edward3105 2 роки тому +1

    on this line int *a=&b; it stores the value that's on b address and not the b address right?

    • @PortfolioCourses
      @PortfolioCourses  2 роки тому

      That will store memory address of the variable b into the pointer variable a.

    • @edward3105
      @edward3105 2 роки тому

      @@PortfolioCourses but you placed * before a you didn't say a=&b;

    • @PortfolioCourses
      @PortfolioCourses  2 роки тому +1

      @@edward3105 So if we had:
      int *a = &b;
      this would be equivalent to this:
      int *a;
      a = &b;
      I think this part of C is kind of confusing, but if we're declaring a pointer and initializing it to a memory address on the same line, then we have the * in front of the pointer variable name. And that's just because we need it there to declare it the variable as a pointer.
      But after we've declared a pointer, whenever we use the * with our pointer variable it works as the de-reference operator that "gets what the pointer is pointing to".

    • @edward3105
      @edward3105 2 роки тому

      @@PortfolioCourses I kinda thought about that but in this situation like you showed in other video char *s2 =" abcdef" why I don't declare the pointer like this char *s2= &a and let's say char a[ ]= {"abcdef"}

    • @PortfolioCourses
      @PortfolioCourses  2 роки тому +2

      @@edward3105 Oh so in if we have:
      char a[] = "abcdef";
      Then a is char array that has been initialized to the string "abcdef". So..
      a[0] = 'a'
      a[1] = 'b'
      ..
      a[5] = 'f'
      a[6] = '\0'
      And then if we want to make s2 a pointer to a in this case we would say:
      char *s2 = a;
      The reason is that arrays are different than variables.
      If we had:
      char x = 'm';
      THEN we would have:
      char *s2 = &x;
      and s2 would be a pointer to the x, it would store the memory address of x. But in the case of:
      char a[] = "abdef";
      'a' is a char array, and when we just use the name of a char array like 'a' what we actually get is a memory address, there is no need to use the & operator.
      So if we have:
      char *s2 = a;
      then we would actually get s2 storing the memory address of the array 'a' (the memory address of the first char in that array) We say that the array 'decays to a pointer' in this situation. If you try this:
      char a[] = "abcdef";
      printf("%p", a);
      you'll see what I mean, in that 'a' is just a memory address. So we don't need to apply the & operator to *get* the memory address like we do a variable.

  • @dr_3vo
    @dr_3vo 2 роки тому

    Very nicely explained

  • @tornikechachanidze2245
    @tornikechachanidze2245 2 роки тому +1

    Thanks for great explanation! I know generally its not good practice but in this swap example if we save adress of x and y in "int a" and "int b" instead of "int *a" and "int *b" does this make any change?

    • @PortfolioCourses
      @PortfolioCourses  2 роки тому

      You're welcome Tornike! :-) The parameters of the swap function do need to be int *a and int *b (i.e. pointers) for the swap to work, it won't work if they are just int a and int b, as those would int parameters and not pointers.

  • @TheBluNitro
    @TheBluNitro 7 місяців тому

    so all values in that array is stored in that one memory address?

    • @PortfolioCourses
      @PortfolioCourses  7 місяців тому +1

      They *begin* at that one memory address, the memory address is the memory address of the first element in the array. :-)

    • @TheBluNitro
      @TheBluNitro 7 місяців тому

      @@PortfolioCourses oh I see, I understand now. thanks fam ^^

  • @jonathanmoore5619
    @jonathanmoore5619 Рік тому

    So this is a deep copy, if not a pointer and shallow copy if a pointer within a struct? What about string literals? I guess that doesn't matter because they are immutable? Is that right?

    • @PortfolioCourses
      @PortfolioCourses  Рік тому

      If you have a pointer in a struct, then when you do an assignment, yes a "shallow copy" will occur as it's really only the pointer that will be copied from one struct to the next. And string literals are immutable, yes. :-)

  • @Yazan8565
    @Yazan8565 Рік тому

    Is there a video on dynamic length for strings and scanf?
    Such as if I wanted the user to enter a string that isn't restricted to 5, 7, 8, 20 characters?
    Also is there a video on input validation?
    How would I prevent the code from continuing on with unwanted inputs that are combinations of characters and numbers and special characters.

    • @PortfolioCourses
      @PortfolioCourses  Рік тому

      This video covers string input with spaces: ua-cam.com/video/f8589Y9LHHg/v-deo.html. This video covers validating that a string contains an integer: ua-cam.com/video/W3dtyZr8rcY/v-deo.html. But that's more for fun, if you really want to do validation I would suggest checking out regex: www.scaler.com/topics/c-regex/

  • @raidon5553
    @raidon5553 Рік тому

    which compiler do you use for c

  • @ivan_9386
    @ivan_9386 Рік тому +1

    Subscribed!
    🏆

  • @Chigo-nr8jg
    @Chigo-nr8jg Рік тому

    i'm a bit confused, towards the ending, a is a pointer, then a is also an array?

    • @PortfolioCourses
      @PortfolioCourses  Рік тому

      Which time of the video is this? Arrays decay to pointers when used in certain ways, and pointers can be used with "array notation". This video about passing arrays to functions addresses some of this: ua-cam.com/video/oe2bZKjiWrg/v-deo.html. As does this video on pointer notation: ua-cam.com/video/hWGYBMO553A/v-deo.html. :-)

  • @cleightthejw2202
    @cleightthejw2202 Рік тому

    About that issue of freeing memory after assigning it with 'Malloc (and also calloc, correct?)'-
    Is that memory space freed by the system after the program is closed? And it definitely would be removed after a reboot or crash of the system?
    Thank you

  • @rad6626
    @rad6626 2 роки тому

    you make amazing videos

    • @PortfolioCourses
      @PortfolioCourses  2 роки тому

      I'm really glad to hear you enjoy them, thank you for the positive feedback! :-)

  • @bahioTeixeira
    @bahioTeixeira 2 роки тому

    I have no problem understanding the concept of things, i found it really hard to develop any creative solution for problems tho, how can i improve that?

    • @PortfolioCourses
      @PortfolioCourses  2 роки тому +1

      Great question Victor! :-) What you're talking about is a very common problem for computer programmers. I've created this playlist to try to start speaking to this problem: ua-cam.com/play/PLA1FTfKBAEX6e_cFeqZCuUcexEJZS4OOQ.html. But the playlist is still new and I have to make more videos on that one. Essentially though, it takes time and lots and lots of practice to get better at "creating solutions". Every time we solve a problem or figure out a new program our brain adds another "solution" to a library inside our heads. When we face new problems, we look back at this "library" for help. The new problem might not be identical to old problems, but it shares common characteristics to old problems. The more problems we see and learn about the more common characteristics there will be to 'new' problems, and the easier they get to solve. There is more to it then this... we get better at debugging with experience too, for example. But this is a big part of it, just lots of experience and practice. :-)

  • @raquelbraunschweig2938
    @raquelbraunschweig2938 2 роки тому

    I have a question. My teacher usually writes for example word = (char *) (malloc(10*sizeof(char))
    what is the (char *) for ?

    • @PortfolioCourses
      @PortfolioCourses  2 роки тому +2

      malloc returns a void pointer, and in C++ it is necessary to "cast the type" (change the type) to (char *) or whatever other type of pointer your variable is... in C this isn't necessary. This answer has more details: stackoverflow.com/a/605856. And this answers explains some reasons why I don't do it: stackoverflow.com/a/605858. Maybe next class you can tell your teacher they don't need to do that. ;-)

    • @raquelbraunschweig2938
      @raquelbraunschweig2938 2 роки тому

      @@PortfolioCourses thank you!

    • @PortfolioCourses
      @PortfolioCourses  2 роки тому

      @@raquelbraunschweig2938 you're welcome! :-D

  • @victor_noda
    @victor_noda 2 роки тому

    I've just noticed, you're the guy from 3Blue1Brown !!!

    • @PortfolioCourses
      @PortfolioCourses  2 роки тому

      I've never heard of that channel before Victor, but I looked it up just now and it looks cool! :-)

  • @timg.6460
    @timg.6460 Рік тому

    Thank you so much!

  • @rezuwankabir3372
    @rezuwankabir3372 2 роки тому

    js curious so wanted to ask you how long do u think c language takes to learn (like completely and ur good at it)

    • @PortfolioCourses
      @PortfolioCourses  2 роки тому +3

      That's a good question Rezuwan, but it would depend on a lot of things. Like if it's the first language that someone is ever learning it will take longer than if they know other languages already. Or if they are learning it full-time vs part-time, etc. I would say C can be learned "well enough" to work in it by taking a 4 month course at a university or college, or by self-studying full-time for a month. And I would say it would take a year of really working with it on some projects to get really "good" at it, though with programming, learning never stops. :-)

  • @addmix
    @addmix Рік тому

    I think the only reason pointers are confusing is because the syntax makes little sense. There's nothing about the syntax that gives clues as to what the code does, unless you already know about pointers and their syntax.

    • @PortfolioCourses
      @PortfolioCourses  Рік тому +1

      I think the usage of * to both declare a pointer and de-reference can be confusing. I also think the syntax:
      int *p;
      is confusing because the type 'int' isn't really the type that p stores. Really, p stores a memory address, and int is the type of data that p is pointing TO, i.e. the type of data at the memory address that p is itself storing. But for regular variables, 'int' would be the type. That different can be confusing too I think. Imagine if instead we had:
      address p{int};
      Or something like that to indicate p stores a memory address of type int. To me that, or something like it, could help. Oh well, it is what it is now! :-)

  • @Andrii87
    @Andrii87 9 місяців тому

    good video, i like it

  • @justcurious1940
    @justcurious1940 2 роки тому

    thank u portfolio u are so cool

  • @KrisKasprzak
    @KrisKasprzak 2 роки тому

    I would highly recommend to start off with why you need a pointer in the first place. The way it’s presented sounds like it’s just a bunch of busywork.

    • @PortfolioCourses
      @PortfolioCourses  2 роки тому +2

      Thanks for the feedback Kris, I hear you. I get into this about 9:30 into the video. Normally I like to start with "why" too but in the case of pointers, 1) most people that find this video are students that are confused from trying to learn pointers from their teachers and that are looking to understand the "nuts and bolts" of what is happening, 2) it's hard to explain the use cases without explaining memory addresses and at that point I might as well explain pointers anyways. 🙂

  • @alfredocandia6178
    @alfredocandia6178 4 місяці тому

    Magnificent

  • @quitecontrary.
    @quitecontrary. 9 місяців тому

    THANK YOUUUUU

  • @krishnakumawat9957
    @krishnakumawat9957 2 роки тому

    thanks helpful vid

  • @timog7358
    @timog7358 2 роки тому

    haha the meme is too accurate

  • @nomalware2811
    @nomalware2811 Рік тому

    Man u r littttttttt !!!!!!!!!!!

    • @PortfolioCourses
      @PortfolioCourses  Рік тому

      hahaha I've never been called lit before, so thank you! :-)

  • @3minuteai
    @3minuteai 2 роки тому

    For once, the software is actually really useful

  • @marilynyballa809
    @marilynyballa809 2 роки тому

    god bless ur heart

  • @nahuel3256
    @nahuel3256 2 роки тому

    I love you!

  • @saboten7584
    @saboten7584 2 роки тому

    thanks!

  • @alexandarpetrov
    @alexandarpetrov Рік тому

    Top !!!

  • @NikitaSafronov-y6i
    @NikitaSafronov-y6i 2 роки тому +1

    AAAaaaaawesome ! =)

  • @Salamanca-joro
    @Salamanca-joro 2 місяці тому

    Why i can't understand this!!! Is it because i played rdr2 for three hous before looking at this 🤠🤯

  • @Soso.Tataema
    @Soso.Tataema Рік тому

    I want an Apple but I point to Banana tree...

  • @johnd942
    @johnd942 2 місяці тому

    Sorry.
    I made it half way through before I became 'bamboozled!'
    😕😕

  • @Reverso...
    @Reverso... Рік тому

    O indiano KAKAKAKAKAKAKA

  • @alst4817
    @alst4817 4 місяці тому

    A bit pointless…

  • @nhatan2511
    @nhatan2511 Рік тому

    Thank you very much

  • @matjasunio6354
    @matjasunio6354 Рік тому

    thank you so much!