私は、Pythonを少し知っていることから得られる自習のために、「難しい方法でCを学ぶ」ことを行っています。いくつかのチュートリアルを読みましたが、ポインターと割り当てがどのように機能するかについて頭を悩ませることはできません。ポインタを逆参照すると、次のように直接値を指定できることを理解しています。
int *anint = 42;
しかし、すでに作成された変数のメモリ位置を具体的に参照するのはどうでしょうか?具体的には、次のことを試しました。
char *pointer_to_strlit;
char *strlit = "some stuff";
pointer_to_strlit = &strlit;
これを行った後、次の原因でセグメンテーション違反が発生するのはなぜですか。
printf("I print strlit: %s\nI print it again by pointing to it: %s\nI print where the pointer is pointing: %p\n", strlit, *pointer_to_strlit, pointer_to_strlit);
Cの型は、それらがどのように動作するか、およびポインターを使用して特定の型を参照する方法を理解するのが非常に難しいようです。それぞれの異なるデータ型(、、、、、、、、、関数など)を指すための構文を具体的に概説する明確なガイドはありますchar
か*char
?ルールセットを理解するのに役立つステップのリストでさえも役に立ちます。*char[]
int
struct
void
null