点阵转char怎么能像数组一样?

问题描述 投票:-2回答:1

我试图理解C语言中的指针。

char *name = "HASAN";

当我用char *存储 "HASAN "时,该字符串作为一个字符数组存储在内存中的某个地方,我可以通过将 "name "作为一个数组来访问该字符串中的每一个字符。

//second character of HASAN is A.
printf("%c", name[1]); 

但是我知道 "name "只是一个指针,它存储了字符串 "HASAN "的第一个字符'A'的地址。所以,"name "这个指针怎么能像一个数组一样呢?

string pointers
1个回答
0
投票

这很简单。

正如标准所说。

*(name + N) == name[N]

而这并不重要 name 被声明为数组衰减为指针。

char *name = "HASAN"; 

char name[] = "HASAN";

0
投票

考虑以下两个例子。

char arr[] = "HASAN"; // array 

它连续分配了6个字节的内存,并将第一个分配的字节的地址与以下内容关联起来: arr.

另一方面:

char ptr* = "HASAN";  // pointer

指针变量 ptr* 为变量连续存储6个字节 4个额外的字节用于指针变量本身,并将字符串字面的地址分配给了 ptr. 因此,在这种情况下,共分配了10个字节。

© www.soinside.com 2019 - 2024. All rights reserved.