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

标签 c pointers

我是 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/

相关文章:

c++ - 使用 C++ 时需要左值作为赋值错误的左操作数

c - 为什么这段 C 代码不更改字符串并导致缓冲区溢出?

c - 变量的地址没有改变

c - ubuntu 在代码块中工作时出错?

c - 赋值从没有强制转换的整数生成指针 - rand()

c - 指针如何在 C 上工作

c - 当存在目标变量时,在 strcat、strcopy 等(等)中返回 char* 的目的是什么?

c - 创建打印数据后输出函数为空

c++ - 这个数组声明有什么问题?

c++ - 哪个 vector 地址更安全?