arrays - 使用与字符数组类似的语法显示字符指针?
问题描述
因此,在数组中,您可以使用 [i] 从一个索引移动到下一个索引。我知道你可以通过增加指针的内存地址来做类似的事情:
pMyPointer++;
但是你可以使用与数组类似的语法(使用 [ ])遍历指针吗?我是 C 新手,所以如果可以,为什么,它是如何工作的,正确的语法是什么?我想它看起来像:
#define MAXLENGTH 5
...
char* pMyString = myString;
for(int i = 0; i < MAXLENGTH; i++)
printf("%c", *pMyString[i])
解决方案
#define MAXLENGTH 5
...
char* pMyString = myString;//No &: if myString is an array, it's already an address, so no & needed
for(int i = 0; i < MAXLENGTH; i++)
{
printf("%c", *pMyString); ++pMyString;
}
或者你可以printf("%c",pMyString[i]);
。
底线与上面的评论一样:您可以写成ptr[i]
,*(ptr+i)
反之亦然-它们等同于同一件事。
这是一个更好的方法:
while (*pMyString)
{
printf ("%c",*pMyString); ++pMyString;
}
这很酷的原因是你不再被绑定到 MAXLENGTH - 它会一直持续到它到达'\0'
字符串字符的结尾。
推荐阅读
- sql - 相同查询在 Postgres 上正常工作时出现 H2 SQL 语法错误
- php - 为 php 7.2 重构 create_function
- html - 指针悬停在圆形图标上
- javascript - Nextjs SSG 1000 万条记录
- java - Spring kafka 消费者在批处理侦听器中读取较少的块
- android - 华为推送包“所有代币都无效”
- python - 如何在shell脚本中的两行模式之间打印数据
- linux - linux会丢弃不在同一个子网中的多播数据包吗?
- javascript - 如何更改 TCPDF 中复选框的样式?
- codeigniter - 在 Codeigniter 3.x 中动态切换数据库