c语言指针回到初始位置,C语言指针自增后怎么还原到首地址啊求高手解

1,C语言指针自增后怎么还原到首地址啊求高手解int *origin = null;//保存最初的位置int *p = .....//给要操作的指针赋初值,如int *p = a;origin = p;//保存p++/p--之类的你想做的操作要使用p的首地址,使用origin即可char *ret;ret=send;(send就是刚开始使用的指针变量)源地址就成了ret了你好!方法可以有很多 但思想基本上还是 先用一个变量保存下来 方便以后赋值回去仅代表个人观点 , 不喜勿喷,谢谢 。在使用之前,先用一个变量保存下来?。。?
2,C语言 如何初始化指针数组 比如char dd5short i;for(i=0;i<5;i++)dd[i] = (char *)malloc(sizeof(char));}char *dd[5]=再看看别人怎么说的 。char 指针 , 也就是char *类型 。其初始化本质上与其它变量初始化没有什么区别,就是赋予其一个初始化的值 。对于指针来说,在C语言中,就是一个地址 。区分初始化情况,有四种表象:1 初始化为空 。即char * str = NULL;的形式,NULL在C语言中是特定的空指针 , 其值为0.在C语言中,以NULL作为指针的一个未生效状态,其本身是一个非法的地址值 。2 初始化为常量字符串地址 。char * str = "test";常量字符串在运行时会被放在常量空间中,于是这样初始化后,地址是常量空间中的一个地址,对于该地址只能读取,不可写入 。即str的值可以改,但是str指向的值是不可修改的 。3 初始化为变量地址 。这里的变量地址,包括全局变量 , 局部变量的地址,以及通过动态分配申请到的内存地址 。这种情况下,对指针指向的空间是可以修改的 。4 不做初始化 。这种情况在C语言中是允许的 。如果为全局变量或静态局部变量,系统默认初始化为0值,即NULL 。而对于局部变量,将是一个随机值 。所以如果是局部变量不做初始化,在取其指向空间值前,必须为其指定一个合法的值,否则访问会出错 。
3,c语言指针初始化注意了,a只是一个双重指针,不是数组 。还有new这个东西是C++中的 。C中用malloc分配内存 , 再初始化 。第一个,指针变量是局部变量,且没有正确赋值,是一个野指针第二个,指针变量是形参,在函数调用中就吧实参值传给形参了,所以实际上指针p是有被正确赋值的(当然此处假设是调用正确的情况下),不是野指针指针指向变量后才能操作,如:int *pt,a;pt=&a;*pt=5;第二个char *i;i="hello";这样是正确的.int array[4][5][6];int (*pa)[4][5][6] = &array;//一级指针,指针向一个数组,该数组为int [4][5][6]int (**a)[4][5][6] = &pa;//二级指针,指向上一行的一级指针 对于动态分配的结构,不可能用数组这种形式来存储的 。因为数组的下标必须在编译时刻明确为常量 。楼主用的C++,可以考虑用STL的vector 。另外,我觉得本身用维度这么大的数组就不是很合适,应该换别的方式 。指针申明的时候最好初始化 。。初始化以后的指针在一些操作下野会变成野指针,比如:free释放内存以后 。。指向被释放的内存的指针也是野指针 。。我理解的野指针就是不可控的,不确定指向的指针都是野指针 。【c语言指针回到初始位置,C语言指针自增后怎么还原到首地址啊求高手解】
4,C语言里开辟内存空间后如何让指针返回内存首地址1. C语言中有三个分配内存的函数,malloc、malloc和readlloc函数 。成功分配内存后,返回的都是内存首地址,失败返回的是NULL 。2. 三个函数的声明分别是:void* realloc(void* ptr, unsigned newsize);void* malloc(unsigned size);void* calloc(size_t nelem, size_t elsize);都在stdlib.h函数库内原型:extern void *realloc(void *mem_address, unsigned int newsize);用法:#include 功能:改变mem_address所指内存区域的大小为newsize长度 。说明:如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL 。当内存不再使用时,应使用free()函数将内存块释放 。原型:extern void *malloc(unsigned int num_bytes); 用法:#include 功能:分配长度为num_bytes字节的内存块 说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL 。当内存不再使用时,应使用free()函数将内存块释放 。原型:extern void *calloc(int num_elems, int elem_size); 用法:#include 功能:为具有num_elems个长度为elem_size元素的数组分配内存 说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL 。当内存不再使用时,应使用free()函数将内存块释放 。区别: 1、calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据 2、realloc是给一个已经分配了地址的指针重新分配空间,参数ptr为原有的空间地址,newsize是重新申请的地址长度sizeof(指针) 即可,如果是想测量指针指向的内存空间的大小的话,那就不行了 。

    推荐阅读