首页 > 解决方案 > c中的int指针和char指针有区别吗?

问题描述

我是 C 新手,无法理解指针。我感到困惑的部分是关于char *and int *

比如我们可以直接给char赋值一个指针,比如

char *c = "c";它不会出错。

但是,如果我像刚才那样为 int 分配一个指针,例如int * a = 10;

它会出错。我需要在内存中腾出一个额外的空间来为 int 分配一个指针,

int *b = malloc(sizeof(int)); *b = 20; free(b);...

谁能告诉我为什么?

标签: cpointers

解决方案


我认为您误解了指针是什么以及它的含义。在这种情况下:

int* a = 10;

您说的是“创建一个指针(指向 an int)并将其指向文字内存位置0x0000000A(10)。

这和这个不一样:

int n = 10;
int* a = &n;

这是“创建一个指针(指向一个int)并将其指向n.

如果你想动态分配这个:

int* a = malloc(sizeof(int));
*a = 10;

翻译为“创建一个指针(指向一个int)并将其瞄准刚刚分配的内存块,然后将value分配给该位置10

通常你永远不会分配一个int,你会为一个数组分配一堆,在这种情况下你会把它称为a[0]througha[n-1]一个 size 的数组n。在 C*(x + y)中,通常与 或 相同,x[y]换句话说*(x + 0),就是*xx[0]


推荐阅读