欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

指向指针的指针作为参数

程序员文章站 2024-01-01 17:37:52
...

1:指针传值

void setNum(int *set)
{
	*set=5;
}

int main()
{
	int value;
	setNum=(&value);
	cout<<value<<endl;
	return 0;
}



完全可以修改value的值
指向指针的指针作为参数
这里p++修改的是value的值,
p++指针指向的位置发生了变化,这时候
p解引用取出的值,就是不确定的了。
如果指向的是数值,那么比如*p指向数组第一个元素,p++之后,指向第二个数组元素。

但是如果是指针变量呢?

无法达到效果的方法

void GetMemory(char *p,int num)
{
    p=(char *)malloc(sizeof (char)*num);
}
    char *str=NULL;
    //str是指针类型
    GetMemory(str,10);//无法获得新分配的内存区域,只是为p申请了内存
    //str=(char *)malloc(sizeof (char)*10);   //放在主函数内,直接malloc也是可以的
    strcpy(str,"hello");
    cout<<"str="<<str<<endl;

指向指针的指针作为参数

使用返回值,返回malloc分配的地址告诉str


/*返回类型是char指针,是新分配的地址*/
char* GetMemory2(char *p,int num)
{
    p=(char *)malloc(sizeof (char)*num);
    return p;
}
    char *str=NULL;
    //str是指针类型
    str=GetMemory2(str,10);
    //str=(char *)malloc(sizeof (char)*10);
    strcpy(str,"hello");
    cout<<"str="<<str<<endl;

使用双重指针

/*双重指针作为参数,一重指针指向普通变量的地址,双重指针指向指针变量的地址*/
void GetMemory(char **p,int num)
{
    *p=(char *)malloc(sizeof (char)*num);
}
    char *str2=NULL;
    GetMemory(&str2,12);
    strcpy(str2,"hello str2");
    cout<<"str="<<str2<<endl;
    return 0;

指向指针的指针作为参数

相关标签: C

上一篇:

下一篇: