gpt4 book ai didi

c - c中的int指针和char指针有区别吗?

转载 作者:行者123 更新时间:2023-12-03 18:43:17 25 4
gpt4 key购买 nike

我是 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)要么只是 *xx[0] .

关于c - c中的int指针和char指针有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64235422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com