我用 C 写了一段代码,它发送一个指向函数的指针来打印它,但是有一个时间 运行 错误
I wrote a code in C that send a pointer to function to print it, but there is a time running error
这是代码:
代码需要将数组发送到函数,函数将打印但似乎存在 运行 时间错误
#include <stdio.h>
#include <string.h>
void printArray(char* p, int len)
{
for (p; p < p + len; p++)
{
printf("%c", *p);
}
printf("\n");
}
int main(void)
{
char* msg = "hi jyegq meet me at 2 :)";
printArray(msg, strlen(msg));
getchar();
return 0;
}
for (p; p < p + len; p++)
此条件始终为 true,因为您不修改 len
且 p
与 p
相同,即使在突变。您需要定义一个初始等于 p
的新指针 q
并且仅变异 q
.
void printArray(char* p, int len)
{
for (char *q = p; q < p + len; q++)
printf("%c", *q);
printf("\n");
}
最好定义 char const* p
,因为没有理由改变 p
。
在这个for循环中
for (p; p < p + len; p++)
条件总是计算为逻辑 true
(除非 len
等于 0
或具有调用未定义行为的负值)因为 p
明显小于p + len
.
函数可以通过以下方式声明和定义
void printArray( const char *s, size_t len )
{
for ( const char *p = s; p < s + len; p++)
{
putchar( *p );
}
putchar( '\n' );
}
注意指针参数应该有限定符const
,因为指向的字符串在函数内没有改变,第二个参数的类型应该是size_t
。它是函数 strlen
.
的 return 类型
这是代码: 代码需要将数组发送到函数,函数将打印但似乎存在 运行 时间错误
#include <stdio.h>
#include <string.h>
void printArray(char* p, int len)
{
for (p; p < p + len; p++)
{
printf("%c", *p);
}
printf("\n");
}
int main(void)
{
char* msg = "hi jyegq meet me at 2 :)";
printArray(msg, strlen(msg));
getchar();
return 0;
}
for (p; p < p + len; p++)
此条件始终为 true,因为您不修改 len
且 p
与 p
相同,即使在突变。您需要定义一个初始等于 p
的新指针 q
并且仅变异 q
.
void printArray(char* p, int len)
{
for (char *q = p; q < p + len; q++)
printf("%c", *q);
printf("\n");
}
最好定义 char const* p
,因为没有理由改变 p
。
在这个for循环中
for (p; p < p + len; p++)
条件总是计算为逻辑 true
(除非 len
等于 0
或具有调用未定义行为的负值)因为 p
明显小于p + len
.
函数可以通过以下方式声明和定义
void printArray( const char *s, size_t len )
{
for ( const char *p = s; p < s + len; p++)
{
putchar( *p );
}
putchar( '\n' );
}
注意指针参数应该有限定符const
,因为指向的字符串在函数内没有改变,第二个参数的类型应该是size_t
。它是函数 strlen
.