string-为什么赋给值指针(动态指针)值时,两次输出不一样?并且输出的地址也不一样,怎么让它们一样

问题描述

为什么赋给值指针(动态指针)值时,两次输出不一样?并且输出的地址也不一样,怎么让它们一样
#include
#include
using namespace std;
main()
{
string str1;
cout<<""输入一个数"";
cin>>str1;
char *Num1=new char[str1.length()];
int *num1=new int[str1.length()];
str1.copy(Num1str1.length()0);
for (int i2=0;i2<str1.length();i2++)//第一次输出
{
*num1=*Num1-48;//转换成数字,赋值给动态指针
cout<<*num1<<endl;//输出指针值
cout<<num1<<endl;//输出地址
num1++;
Num1++;

}cout<<endl;for (int i=0;i<str1.length();i++)//第二次输出{    cout<<num1;    num1++;    cout<<endl;}

}
测试结果:

解决方案

你改变了指针,那么肯定得不到了。
除非你再加一个变量在你修改以前
int *num1=new int[str1.length()];
int * oldnum1 = num1;

解决方案二:
你要什么和什么一样。不同的地址,不同的值当然不一样。你要一样就赋值呗。

时间: 2024-12-17 07:35:12

string-为什么赋给值指针(动态指针)值时,两次输出不一样?并且输出的地址也不一样,怎么让它们一样的相关文章

C++ 指针和free()的关系,看书说free()以后指针指向的内存的值还是原来的值

问题描述 C++ 指针和free()的关系,看书说free()以后指针指向的内存的值还是原来的值 1C int p=(int)malloc(sizeof(int)); *p=2; int *q=p; printf(""%d""*p); free(p); printf(""%d""*p);两个值不一样第一个是2,第二个是875986 解决方案 没错,free只是让运行时将这块内存标记为未分配,下次new的时候可能(不是肯定)分配

c++的问题-动态内存的指针初始化指针变量的引用,为什么出错了?

问题描述 动态内存的指针初始化指针变量的引用,为什么出错了? 解决方案 很奇怪,楼主的图片我一点都看不清楚 解决方案二: 因为new 的返回值是float*类型的,与左值类型不对应 解决方案三: http://zhidao.baidu.com/question/1670782483782278987.html?fr=index_nav&uid=344EC4621704AC588750E7621AB72A17&step=2图片看不清,这是百度知道的地址,进入看看 解决方案四: float *

【C/C++学院】0823-静态联合编译与动态联合编译/父类指针子类指针释放/虚函数/纯虚函数概念以及虚析构函数/抽象类与纯虚函数以及应用/虚函数原理/虚函数分层以及异质链表/类模板的概念以及应用

静态联合编译与动态联合编译 #include <iostream> #include <stdlib.h> //散列 void go(int num) { } void go(char *str) { } //class //::在一个类中 class A { public: void go(int num) { } void go(char *str) { } }; void main() { ///auto p = go;编译的阶段,静态联编 void(*p1)(char *s

Go语言的方法接受者类型用值类型还是指针类型?_Golang

概述 很多人(特别是新手)在写 Go 语言代码时经常会问一个问题,那就是一个方法的接受者类型到底应该是值类型还是指针类型呢,Go 的 wiki 上对这点做了很好的解释,我来翻译一下. 何时使用值类型 1.如果接受者是一个 map,func 或者 chan,使用值类型(因为它们本身就是引用类型). 2.如果接受者是一个 slice,并且方法不执行 reslice 操作,也不重新分配内存给 slice,使用值类型. 3.如果接受者是一个小的数组或者原生的值类型结构体类型(比如 time.Time 类

Android For JNI(三)——C的指针,指针变量,指针常见错误,值传递,引用传递,返回多个值

Android For JNI(三)--C的指针,指针变量,指针常见错误,值传递,引用传递,返回多个值 C中比较难的这一块,大概就是指针了,所以大家还是多翻阅一下资料,当然,如果只是想了解一下,看本篇也就够了,不过我也尽量陈述的很详细 一.指针 要说指针,其实通俗易懂的话来说,他应该是保存内存地址的一个变量,我们来看一下小例子 #include <stdio.h> #include <stdlib.h> main(){ //int 变量 int i ; i = 5; //打印i的值

深入分析C++ 值传递、指针传递、引用传递

而关于值传递,指针传递,引用传递这几个方面还会存在误区, 所有我觉的有必要在这里也说明一下~ 指针与引用的相同点与不同点: ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:引用是某块内存的别名. ★ 区别: 1. 指针是一个实体,而引用仅是个别名: 2. 引用使用时无需解引用(*),指针需要解引用: 3. 引用只能在定义时被初始化一次,之后不可变:指针可变: 引用"从一而终" ^_^ 4. 引用没有 const,指针有 const,const 的指针不

数据结构 二叉树-new运算符是否改变其指针原有的值

问题描述 new运算符是否改变其指针原有的值 如图,感觉会,但改变后像leftchild不是不能指向分配的空间吗,小白一个,求指教 解决方案 会,但是看Insert()的参数,第二个参数是指针的引用,相当于二级指针,所以修改了ptr相当于修改了上一层递归的ptr->leftChild. 解决方案二: 我懂了,其实书后面就有,不过还是谢谢你啦 解决方案三: 开辟了新的内存空间的 解决方案四: 指针的引用做参数,可以修改指针本身,这样insert函数内部就可以修改指针的内容,也就是指向的地址.

指针-为什么fseek设置的值与ftell返回值不同?

问题描述 为什么fseek设置的值与ftell返回值不同? 程序很简单,写了一个lzw文件,然后 用fseek将指针放在第i个字节,ftell返回值i+1 但是到了第290个字节,ftell返回802.这是为什么? 解决方案 首先,贴上这几个函数的返回值 man内容 The rewind() function returns no value. Upon successful completion, fgetpos(), fseek(), fsetpos() return 0, and ftel

C/C++中字符指针数组及指向指针的指针的含义

就指向指针的指针,很早以前在说指针的时候说过,但后来发现很多人还是比较难以理解,这一次我们再次仔细说一说指向指针的指针. 先看下面的代码,注意看代码中的注解: #include <iostream>#include <string>using namespace std; void print_char(char* array[],int len);//函数原形声明void main(void){//-----------------------------段1----------