gpt4 book ai didi

C- 声明 char 数组

转载 作者:行者123 更新时间:2023-11-30 21:30:54 25 4
gpt4 key购买 nike

我是 C 新手,在为类项目声明字符数组时遇到问题。这大概是我正在做的事情:

char test[]="Test\0";

char *Pointer;
Pointer=test;

然后我有一个函数 printString(char* chars) ,它将 Pointer 作为参数。当我尝试编译时,我被告知测试或指针均未声明。我不确定为什么,所以有人可以指出我正确的方向。

这是整个代码:

main()
{

char *test2="Test\0";

printString(test2);
}

printString(char* charArray)
{

int charPos=0;
int endOfString=1;

char al;
char ah;
int ax;

while(endOfString==1)
{
al=charArray[charPos];
ah=0xE;
ax=ah*256+al;

interrupt(0x10,ax,0,0,0);


if(al=='\0')
{
return 0;
}

charPos++;
}
}

最佳答案

首先,那里不需要 NULL 字符。

原因如下:

当声明一个字符数组并对其进行初始化时,如您的示例所示:

char test[] = "Test";

编译器会将“Test”中的字符放入测试数组中,然后添加一个空字符,以便测试可以用作字符串,如下所示:

    +---+---+---+---+----+
test| T | e | s | t | \0 |
+---+---+---+---+----+

关于您的问题,看看这是否有帮助:

void print_string( char *p ) {
while ( *p != '\0' ) {
printf( "%c", *p );
p++;
}

}

请记住,C 样式字符串是一个字符序列,并且始终以 NULL 字符结尾。

例如,函数“print_string”需要一个指向 char 的指针作为参数(您可以传递您创建的 char 数组,并且它会起作用,因为数组被视为指针。)该函数将打印每个字符,直到遇到 NULL 字符。

重要:

char test[]  = "Test";
char *test_2 = "Test";

在数组版本中,可以修改存储在 test 中的字符,就像任何数组的元素一样。在指针版本中,测试指向字符串文字,并且不应修改字符串文字。

我相信问题可能是因为您正在尝试修改字符串文字。这样做会导致未定义的行为。

要么使用数组,要么分配内存并使 char 指针指向它。

关于C- 声明 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22749155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com