Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用指针输入数据 我是C++新手,但有很多年的编程经验。在我达到目标之前,我的学习一直很好。我必须承认我正在努力完成一些简单的事情。例如,在未能将数组数据存储到指针中,然后列出指针之后,我使用下面的basic帮助我理解。在这里,我的目标是在数组指针(或类似的东西)中输入一个名称列表,然后从内存位置检索列表中的值。 a) 我无法将此设置为允许请求输入和存储到指针 b) 当我循环指针时,它只显示名称的第一个字符。如果有人能帮我实现上述目标,这将是我在指针方面最大的突破_C++_Arrays_Pointers - Fatal编程技术网

使用指针输入数据 我是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;iloop
a),我无法将此设置为允许请求输入并存储到指针

用于从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]
dereferences
pth
循环中每次只打印第一个字符的指针数组。将其替换为
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];  
}