我是 C 新手,无法理解指针。我感到困惑的部分是关于 char *
和 int *
.
比如我们可以直接给char赋值一个指针,比如char *c = "c";
它不会出错。
但是,如果我像刚才那样为 int 分配一个指针,例如 int * a = 10;
,
它会出错。我需要在内存中腾出一个额外的空间来为int分配一个指针,
喜欢 int *b = malloc(sizeof(int)); *b = 20; free(b);
...
谁能告诉我为什么?
最佳答案
我认为您误解了指针是什么以及它的含义。在这种情况下:
int* a = 10;
您是说“创建一个指针(指向 int
)并将其指向文字内存位置 0x0000000A
(10)。这和这个不一样:
int n = 10;
int* a = &n;
这是“创建一个指针(指向 int
)并将其瞄准 n
的内存位置。如果你想动态分配这个:
int* a = malloc(sizeof(int));
*a = 10;
这意味着“创建一个指针(指向 int
)并将其指向刚刚分配的内存块,然后将值分配给该位置 10
。通常你永远不会分配一个
int
,你会为一个数组分配一堆,在这种情况下,你会将它称为 a[0]
通过a[n-1]
对于大小为 n
的数组.在 C *(x + y)
一般与 x[y]
相同或者换句话说*(x + 0)
要么只是 *x
或 x[0]
.
关于c - c中的int指针和char指针有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64235422/