底辺過ぎてちょっとビビる

26歳からIT業界にいるエンジニアが、まったく成長できてないことを確認するブログ。備忘録的に使いたいとも考えています。

【C言語】ポインタがキツイ【まったく記憶にない】

昨日の続きで、コンパイル通してデバッグ中・・・。

 

ポインタあたりでものすごく躓いてます。

 

例えば、ある関数に引数として渡すデータをポインタとした時に、どうやって渡せばいいんだっけと悩んでしまう。

そしてこんなふうな間違いを犯す。

 

#include <stdio.h>
#include <string.h>

void cat(char *);

int main(void)
{
    char* str;

    memset(str, 0x00, sizeof(str));
   
    cat(str);
   
    return 0;
}

memset()で初期化処理を行うのはまぁいいとして、メモリを確保してないのにどうやってstrのサイズで0x00で埋めるつもりなのだろうか・・。

こういう時こそ、実は今までよくわかっていなかったmalloc()を使うべきところなのだ。

 

#include <stdio.h>
#include <string.h>

void cat(char *);

int main(void)
{

    char* str;
   
    str = (char *)malloc(10);

    memset(str, 0x00, sizeof(str));
    strcpy(str,"aaaabbbbc");
   
    cat(str);
   
    return 0;
}

 

これも完全にコピペでコーディングしてきたツケだと本当に思う。