31日間のC-9、ワイルドポインター、nullポインター

1、初期化されていないポインタ

ポインタが作成されますが、値は割り当てられません。

#include <stdio.h>

int main() {
    
    
	int *a;
	*a = 3;
	return 0;
}

効果:コンパイラーはエラーを報告します。

ここに画像の説明を挿入

2.配列を操作します。ポインタが配列の長さを超えています

ポインタですが、範囲外です。
長さは3ですが、5番目のアドレスが動作します。

#include <stdio.h>

int main() {
    
    
	int a[] = {
    
    1, 2, 3};
	int *b = a;
	*(b + 4) = 6;
	printf("%d\n", *(b + 4));
	return 0;
}

効果:エラーを報告します。

ここに画像の説明を挿入

3.ポインターは存在しますが、データは残っています

#include <stdio.h>

int *abc() {
    
    
	int a = 3;
	return &a;
}

int main() {
    
    
	int *a = abc();
	*a = 4;
	printf("%d\n", *a);
	return 0;
}

効果:エラーを報告します。

ここに画像の説明を挿入

4.ヌルポインタ

ポインタにNULLを割り当てて、NULLポインタを表すことができます。

#include <stdio.h>

int main() {
    
    
	int *a = NULL;
	printf("%d\n", a == NULL);

	int b = 3;
	a = &b;
	printf("%d\n", a == NULL);
	return 0;
}

効果:
最初はNULLであり、割り当て後はNULLではなくなります。

ここに画像の説明を挿入
nullの割り当てとnullの判断は、より一般的な方法です。

おすすめ

転載: blog.csdn.net/qq_37284843/article/details/124408669