c中int指针和char指针之间有区别吗?

Jun*_*ung 4 c pointers

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

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

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

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

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

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

谁能告诉我为什么?

tad*_*man 5

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

int* a = 10;
Run Code Online (Sandbox Code Playgroud)

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

这和这个不一样:

int n = 10;
int* a = &n;
Run Code Online (Sandbox Code Playgroud)

即“创建一个指针(指向 an int)并将其瞄准n.

如果你想动态分配这个:

int* a = malloc(sizeof(int));
*a = 10;
Run Code Online (Sandbox Code Playgroud)

这意味着“创建一个(指向 an 的int)指针并将其指向刚刚分配的内存块,然后将值分配给该位置10

通常情况下,你从来没有分配一个int,你会分配一群人对一个数组,在这种情况下,你把它称作a[0]通过a[n-1]对大小的数组n。在 C*(x + y)中通常与 相同,x[y]或者换句话说*(x + 0)就是 just*xx[0]


小智 3

在您的示例中,您不发送c到 char 'c'。您使用的"c"是字符串文字。对于字符串文字,其工作方式如/sf/answers/895716391/中所述。