c - 为什么在向字符数组添加指针的情况下不使用 & ?
问题描述
当我们想要一个整数指针时,我们添加 &( 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;
我不认为最后两个代码是不同的。
解决方案
在这个版本中:
int n = 50;
int *p = &n;
你有一个 int
n
. 要创建指向它的指针,您需要使用&
.
另一方面,在这个版本中:
int n[50];
int *p = n;
变量n
是一个数组int
。这具有数组的名称实际上是指第一个元素的属性(即,当这样使用时,数组衰减为指针)。所以不需要&
引用地址。
完全相同的逻辑适用于该char
案例:
char name[] = "Hello";
char *ptr = name;
wherename
是一个数组,因此您可以只使用变量名而不使用&
.
推荐阅读
- c# - 如何将类的属性列表绑定到一系列标签
- office365 - 机器人框架上的团队聊天机器人错误地发送文件
- javascript - 将一堆 ES7 js 文件转译成兼容文件
- python - 将字符串转换为持续时间的标准方法?
- django - Django 使用字段约束更新模型表单
- python - 从没有 sys.path.append 的 git 子模块导入 python 文件
- android - 在 Android 应用中声明 Kotlin 扩展函数的位置
- firebase - firebase 托管 - 在 iframe 中显示不正确的内容
- reactjs - Mxgraph Reactjs 不导入 mxgraph 库
- python - 从以标题为键的列创建字典,没有列表格式