[英]Returning a pointer to an array of ints in c++ (converted from string) - “invalid conversion” error
标头:
#ifndef HEADER_H_INCLUDED
#define HEADER_H_INCLUDED
int i[8];
#endif
主要:
#include <iostream>
#include <string>
#include "header.h"
using namespace std
int main(){
int *test;
string bits = "10011011";
*test = func(bits); // ERROR 2 HERE
//my goal here is to have a pointer in main that
//points to the 1 address of the global var array i
} //if im totally missing the point and there is a
//better way to do this please let me know
功能:
#include <iostream>
#include <string>
using namespace std
int *func(string str){
int l = str.size();
int *ptr;
for(int k=0; k < l; ++k){
i[k] = s[k] - '0';
}
*ptr = i; // ERROR 1 HERE
return ptr;
}
大家好,
当我尝试编译以上代码时,出现两个错误,如标签所示。 他们是:
错误1:从int *到int的无效对话错误2:从int到* int的无效转换
似乎我必须对在这里使用的内容有基本的了解。 我不是将* ptr设置为指向数组i []的第一个内存地址吗? 为什么编译器告诉我我正在尝试将指针的值设置为i []的值? 我想将指针的值设置为i []的ADDRESS。 如果我添加&,则会出现相同的错误。
错误2显然跟随错误1。这是相同的错误,只是向后。
我的问题是,当我试图将func()中的* ptr指向数组i []时,我到底在做什么错? 我想找到其他地方的答案都无济于事。
谢谢。
编辑:这段代码是原始代码(从另一台PC上)的粗略复制,因此,如果您尝试对其进行编译,并且有错别字,我深表歉意。
int *ptr;
声明一个指向int
的指针,所以ptr
是一个指针:一个存储某个int
的内存位置的变量。 当前,它并没有特别指向任何内容,只是您可能不拥有的内存中的随机位置。
*ptr
取消引用ptr
,因此*ptr
是ptr
指向的int
。
当你做*ptr = i;
您正在尝试将ptr
指向的int
设置为i
,它是8 int
的数组。 在这种情况下,数组会衰减为指向其第一个元素的指针,因此您尝试将int
设置为等于int*
,从而导致错误。
这应该只是ptr = i;
,但这不是必需的,因为您可以return i;
而且i
会变成一个指向数组第一个元素的指针。
同样, *test = func(bits);
尝试将test
指向的int
设置为等于func
返回的指针。 它应该只是test = func(bits);
,在这种情况下, test
包含的地址将成为func
返回的地址。 在这种情况下, test
将指向i
的第一个元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.