我试图理解C语言中char指针数组的概念。 在这个基本示例中,我尝试使用x ++运算符获取字符串数,但是不幸的是,我遇到了编译器错误,因为也许我尝试访问额外的内存区域,但我应该这么做吗?感谢您的帮助。
#include <stdio.h>
int main()
{
char *argv[]= {"hello","world"};
int num = 0;
while (argv[num++] != NULL){
printf("num value: %i\t %c\n",num,*argv[num-1]);
}
printf("Final num value: %i\n",num);
return 0;
}
答案 0 :(得分:6)
自此您超出数组界限
while (argv[num++] != NULL)
在argv[num]
为NULL
时停止,而argv[]
的尺寸为2
,并且两个条目均为!= NULL
。
你可以写...
char *argv[]= {"hello","world",NULL};
它应该按您的最终条件工作。
顺便说一句:您知道argv[]
通常用作函数main
的参数的名称,即int main(int argc, char* argv[])
,它们代表程序被调用时的命令行参数。您?当您使用函数main
-参数时,我认为它的最后一个有效元素将由NULL
定义(例如,参见this在线C11标准草案): / p>
5.1.2.2.1程序启动
....
(2)如果已声明,则主函数的参数应 遵守以下约束:
argv [argc]应为空指针。
但是,如果您创建自己的本地argv[]
东西,则必须自己明确地执行此操作。