C++中指针不初始化就传递的问题

C++中指针的使用。以前在使用指针之前都会初始化。今天没有初始化,然后指针传递后没有内容(testptrnoret),后来发现返回指针的话(testptrret),就可以了。

// testptr.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

int* testptrret(int* a,int n)
{
	a = new int[n];

	for (int i = 0; i < n;i++)
	{
		a[i] = i;
	}
	return a;
}

void testptrnoret(int* a, int n)
{
	a = new int[n];

	for (int i = 0; i < n; i++)
	{
		a[i] = i;
	}
}

int _tmain(int argc, _TCHAR* argv[])
{
	int* a=0;
	a = testptrret(a, 4);

	int* b = 0;
	testptrnoret(b, 4);

	return 0;
}

  结果分别如下图所示。

时间: 2024-10-05 23:25:15

C++中指针不初始化就传递的问题的相关文章

C++中指针未初始化的问题

源代码: IntList::IntList(int numVals , int val ) { if (numVals>0){ numberValues=numVals; values=new int[numVals]; for(int i=0;i<numVals;++i){ values[i]=val; } } else numberValues=0; } IntList::IntList(const IntList &il) { numberValues=il.size(); if

DSP开发中遇到的问题 - 类指针未初始化后果

收到RECEIVE_REQ_MSG消息时会执行下面的代码,这里因为某种原因m_receiverSlaverController的值仍为NULL,并没有指向具体的CReceiverSlaverController类.执行到ReceiveHandler函数时,在ReceiveHandler函数中,会通过CReceiverSlaverController类的成员变量m_measurementAgent(类型为Agent类)调用Agent类的成员函数handleMessage,然后在ReceiveHan

浅谈C++中指针和引用的区别

指针和引用在C++中很常用,但是对于它们之间的区别很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法. 1.指针和引用的定义和性质区别: (1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元:而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已.如: int a=1;int *p=&a; int a=1;int &b=a; 上面定义了一个整形变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单元的地址. 而下面2句定义了一

转 浅谈C++中指针和引用的区别

浅谈C++中指针和引用的区别 浅谈C++中指针和引用的区别 指针和引用在C++中很常用,但是对于它们之间的区别很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法. 1.指针和引用的定义和性质区别: (1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元:而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已.如: int a=1;int *p=&a; int a=1;int &b=a; 上面定义了一个整形变量和一个指针变量p,该指针变量指向a

指针参数是如何传递内存的

1.1.5 指针参数是如何传递内存的? 如果函数的参数是一个指针,不要指望用该指针去申请动态内存.如下示例中,Test函数的语句GetMemory(str, 200)并没有使str获得期望的内存,str依旧是NULL,为什么? void GetMemory(char *p, int num) { p = (char *)malloc(sizeof(char) * num); } void Test(void) { char *str = NULL; GetMemory(str, 100); //

C++ 浅谈C++中指针和引用

浅谈C++中指针和引用的区别 指针和引用在C++中很常用,但是对于它们之间的区别很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法. 1.指针和引用的定义和性质区别: (1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元:而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已.如: int a=1;int *p=&a; int a=1;int &b=a; 上面定义了一个整形变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单

C语言指针的初始化和赋值

1.指针的初始化 指针初始化时,"="的右操作数必须为内存中数据的地址,不能够是变量,也不能够直接用整型地址值(可是int*p=0;除外,该语句表示指针为空).此时,*p仅仅是表示定义的是个指针变量,并没有间接取值的意思. 比如: int a = 25; int *ptr = &a; int b[10]; int *point = b; int *p = &b[0]; 假设:int  *p; *p = 7; 则编译器(vs2008)会提示The variable 'p'

C中指针符*和取址符&amp;

申明:转载请注明出处! 学习了C语言之后,关于指针部分看了无数遍,有时候明明觉得自己看懂了,指针就是地址,但是总是在看代码时候糊里糊涂的搞不明白,最近又关于指针强化了一把. 大部分情况下对于程序中指针糊涂是因为不明白指针符“*”有两个作用: 第一,作为标识符,定义变量为指针,如int *p://只是说明变量p是指针变量,而没有实际意义. 第二,作为运算符,像+,—,运算符一样,如cout<<*p;//输出指针变量p所指向的内容. 一般在程序中,第一次出现的指针符*,是作为标识符,申明指针变量,

c++中指针的指针和指针的引用的使用

当指针作为函数的参数进行传递时,实际上本质上是安置传递,即将指针进行了一份拷贝,在函数的内部对这个指针的修改实际上就是对一个在函数内部的那个局部变量的修改.这点事和引用不同的,引用实际上是在参数传递时,将实际变量的地址传了进去,在函数内部访问这个变量时,实际上是使用间接访问的方式来进行了的,所以实际上就是访问了元变量.但是由于只是将地址进行了拷贝,所以对这个指针所指向地址的修改不会对原有的指针产生影响.若果要实现对指针的修改,需要使用指针的指针或者指针的应用进行传递. 一.指针的指针 int v