首页 > 解决方案 > 为什么在向字符数组添加指针的情况下不使用 & ?

问题描述

当我们想要一个整数指针时,我们添加 &( int *p = &n)

int n=50;
int *p = &n;

, 所以类似地在字符串的情况下不应该和这个一样,

char name[] = "Hello"
char *s = &name;

或者像下面的这段代码,

char *s= &"Hello";

而不是这样,

char *s= "Hello";

或者

char name[] = "Hello";
char *ptr=name;

或者

char name[] = "Hello";
char *ptr;
ptr= name;

我不认为最后两个代码是不同的。

标签: cstringpointerscharacter

解决方案


在这个版本中:

int n = 50;
int *p = &n;

你有一个 int n. 要创建指向它的指针,您需要使用&.

另一方面,在这个版本中:

int n[50];
int *p = n;

变量n是一个数组int。这具有数组的名称实际上是指第一个元素的属性(即,当这样使用时,数组衰减为指针)。所以不需要&引用地址。

完全相同的逻辑适用于该char案例:

char name[] = "Hello";
char *ptr = name;

wherename是一个数组,因此您可以只使用变量名而不使用&.


推荐阅读