c从指针打印
我试图将int存储在指针中,就像数组一样使用它。但是下面的代码在终端中生成小矩阵,我不知道为什么。这是我的密码c从指针打印,c,pointers,C,Pointers,我试图将int存储在指针中,就像数组一样使用它。但是下面的代码在终端中生成小矩阵,我不知道为什么。这是我的密码 int main(int argc, char const *argv[]) { char pointer[7]; for (int i = 0; i < 3; i++) { *(pointer+i) = 2; } printf("%s%d\n", "the string length is ",strlen(pointe
int main(int argc, char const *argv[])
{
char pointer[7];
for (int i = 0; i < 3; i++)
{
*(pointer+i) = 2;
}
printf("%s%d\n", "the string length is ",strlen(pointer));
for (int j = 0; j < 3; j++)
{
printf("%c\n", *(pointer+j));
}
return 0;
}
int main(int argc,char const*argv[])
{
字符指针[7];
对于(int i=0;i<3;i++)
{
*(指针+i)=2;
}
printf(“%s%d\n”,“字符串长度为”,strlen(指针));
对于(int j=0;j<3;j++)
{
printf(“%c\n”,*(指针+j));
}
返回0;
}
有人能告诉我问题是什么,以及解决办法吗?
谢谢有几个问题:
2
的字符可能会使您的终端表现得很滑稽,因为它不是可打印的字符。您应该使用%d
并强制转换为(int)
还要注意的是,如果您将
*(指针+i)
写成指针[i]
的话,它会更清晰。您的意思似乎是:)
数组指针的所有元素都由零初始化。因此,您可以使用应用于此阵列的标准函数strlen
函数strlen
具有返回类型size\u t
,因此最好使用格式字符串%zu
在这份声明中
char pointer[7] = { '\0' };
*(pointer+i) = '2';
字符“2”被分配给数组的元素,因此当您打印它们时,您确实会在控制台上看到字符2
printf("%c\n", *(pointer+j));
如果你想处理指针,比如这个循环
for (int j = 0; j < 3; j++)
{
printf("%c\n", *(pointer+j));
}
字符指针[7]
是一个数组,不是指针!它的第一个元素是,但不是你可以发布输出的数组吗?“在终端中生成小矩阵”?那应该是什么?一般来说,我一点也不清楚你想要实现什么。为什么要使用*(指针+i)
而不是更容易阅读的指针[i]
?也许你可以先告诉我们问题是什么?@JensGustedt小矩阵可能是他的终端对\x02
“*它的第一个元素是,但不是数组*”不,它的第一个元素是字符,其他六个元素也是。
for (int j = 0; j < 3; j++)
{
printf("%c\n", *(pointer+j));
}
for ( char *p = pointer; *p; ++p )
{
printf("%c\n", *p);
}