使用指针输入数据 我是C++新手,但有很多年的编程经验。在我达到目标之前,我的学习一直很好。我必须承认我正在努力完成一些简单的事情。例如,在未能将数组数据存储到指针中,然后列出指针之后,我使用下面的basic帮助我理解。在这里,我的目标是在数组指针(或类似的东西)中输入一个名称列表,然后从内存位置检索列表中的值。 a) 我无法将此设置为允许请求输入和存储到指针 b) 当我循环指针时,它只显示名称的第一个字符。如果有人能帮我实现上述目标,这将是我在指针方面最大的突破
请帮忙 代码使用指针输入数据 我是C++新手,但有很多年的编程经验。在我达到目标之前,我的学习一直很好。我必须承认我正在努力完成一些简单的事情。例如,在未能将数组数据存储到指针中,然后列出指针之后,我使用下面的basic帮助我理解。在这里,我的目标是在数组指针(或类似的东西)中输入一个名称列表,然后从内存位置检索列表中的值。 a) 我无法将此设置为允许请求输入和存储到指针 b) 当我循环指针时,它只显示名称的第一个字符。如果有人能帮我实现上述目标,这将是我在指针方面最大的突破,c++,arrays,pointers,C++,Arrays,Pointers,请帮忙 代码 #包括“stdafx.h” #包括 #包括 #包括 使用名称空间std; int i=0; int main(){ char*studentNames[6]={“John Xyy”、“Hellon Zzz”、“Wendy Mx”、“Beth Clerk”、“Jane Johnson”、“James Kik”}; int-iloop=0; //循环浏览并列出名称 对于(iloop=0;iloopa),我无法将此设置为允许请求输入并存储到指针 用于从stdin读取字符串,如下所示。您有
#包括“stdafx.h”
#包括
#包括
#包括
使用名称空间std;
int i=0;
int main(){
char*studentNames[6]={“John Xyy”、“Hellon Zzz”、“Wendy Mx”、“Beth Clerk”、“Jane Johnson”、“James Kik”};
int-iloop=0;
//循环浏览并列出名称
对于(iloop=0;iloopa),我无法将此设置为允许请求输入并存储到指针
用于从stdin读取字符串,如下所示。您有一个大小为6个字符指针的数组。假设字符串长度为每个100个字符,则为从stdin读取的每个字符串分配缓冲内存,并每次将其复制到studentNames
指针数组
char *studentNames[6];
char input[100];
for (int str = 0; str < 6; str++) {
if (fgets(input, sizeof(input), stdin) != NULL) {
studentNames[str] = (char *)malloc(strlen(input));
strcpy(studentNames[str], input);
}
}
在上面的字符串打印中,*studentNames[p]
dereferencespth
循环中每次只打印第一个字符的指针数组。将其替换为studentNames[p]
它打印字符串文本。如果我删除最后一行的指针运算符*,那么,如果我删除所有指针*运算符,会有什么区别。这不会把它变成一个纯粹的数组解决方案,击败指针的动机。@Sylvester这是访问指针数组中元素的方式。int*p[]
,访问元素是通过p[i][j]是一个字符;p[i]是字符*;&p是字符**
来完成的。有关更多信息,请查看我的上一篇文章。我不理解STDIN的值,我还在studentNames[str]=malloc(strlen(input))上收到一个错误;“void*的值不能分配给实体类型char*”错误基本上是说它是一个无效的转换形式malloc(),返回类型void*
到char*
。只需将malloc()结果类型转换为(char*)malloc(strlen(input));
。stdin
应该是小写字母,这是标准的输入流。
char *studentNames[6];
char input[100];
for (int str = 0; str < 6; str++) {
if (fgets(input, sizeof(input), stdin) != NULL) {
studentNames[str] = (char *)malloc(strlen(input));
strcpy(studentNames[str], input);
}
}
//Now try and list values stored at pointer memory location
int p = 0;
for (p = 0; p < 6; p++){
cout<<*studentNames[p];
}