社区
C语言
帖子详情
指针问题
zzsxqzzsxq3000
2003-10-14 11:24:47
请看
allocate(char **buf) {
buf = (char**)calloc(20,sizeof(char*));
}
void main()
{
char **buffer = NULL;
int size;
allocate(buffer);
size = _msize(buffer);
free(buffer);
} 想这样在函数体内分配内存怎么不能返回到主函数,我要怎么做?
在线等待... .. .
...全文
27
14
打赏
收藏
指针问题
请看 allocate(char **buf) { buf = (char**)calloc(20,sizeof(char*)); } void main() { char **buffer = NULL; int size; allocate(buffer); size = _msize(buffer); free(buffer); } 想这样在函数体内分配内存怎么不能返回到主函数,我要怎么做? 在线等待... .. .
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mosaic
2003-10-14
打赏
举报
回复
需要将指针的地址传进去,考虑下面得代码是否可以
allocate(char ***buf) {
*buf = (char**)calloc(20,sizeof(char*));
}
void main()
{
char **buffer = NULL;
int size;
allocate(&buffer);
size = _msize(buffer);
free(buffer);
}
不清楚这个代码的用处是什么?
Hot_Forever
2003-10-14
打赏
举报
回复
int allocate(char **buf)
{
//下面分配内存
.....
if(分配成功) return 0;
else return(errno);
}
TianGuangZao
2003-10-14
打赏
举报
回复
图乱了,重贴:
char ***buf :
////////////////////////////// (*buf[i]) ///////////////////
//// buf ///// *buf ////////// **(buf+i) ///////////////////
/// +----+ // +----+ //////// +---------+ //// +--------+ //
/// | .. ====>| .. ==========>| ...... =======>| string1| //
/// +----+ // +----+ //////// +---------+ //// +--------+ //
///////////// buffer //////// | ...... =======>| string2| //
///////////////////////////// +---------+ //// +--------+ //
///////////////////////////// | ...... =======>| string3| //
///////////////////////////// +---------+ //// +--------+ //
///////////////////////////// | ...... =======>| ...... | //
///////////////////////////// + ...... + //// | ...... | //
///////////////////////////// | ...... =======>| ...... | //
///////////////////////////// //////////////////////////////
TianGuangZao
2003-10-14
打赏
举报
回复
char ***buf 感觉很丑陋! 应该用 return。
////////////////////////////// (*buf[i]) ///////////////////
//// buf ///// *buf ////////// **(buf+i) ///////////////////
/// +----+ // +----+ //////// +---------+ //// +--------+ //
/// | ====>| ==========>| =======>| string1| //
/// +----+ // +----+ //////// +---------+ //// +--------+ //
///////////// buffer //////// | =======>| string2| //
///////////////////////////// +---------+ //// +--------+ //
///////////////////////////// | =======>| string3| //
///////////////////////////// +---------+ //// +--------+ //
///////////////////////////// | . =======>| . | //
///////////////////////////// + . + //// | . | //
///////////////////////////// | . =======>| . | //
///////////////////////////// //////////////////////////////
这么多级下来,能把看的人搞晕。
正确写法:
#include <stdio.h>
char ** allocate(char **tt) { // 传递数组的第一个元素地址
int i;
char **buf = (char**) calloc( 20, sizeof( char*) );
for ( i = 0; i < 3; i++)
buf[i] = tt[i]; // 实际为指针运算,相当于 *(buf+i) = *(tt+i);
return buf;
}
int main()
{
char **buffer = NULL;
int i;
char *temp[10] = {"ping", "guo", "shu"};
buffer = allocate( temp); // 分配空间并初始化
for ( i = 0; i < 3; i++)
printf("%s\n", buffer[i]);
free( buffer);
return 0;
}
ogre
2003-10-14
打赏
举报
回复
th_xu(雷鸟) 和 scottZZ(思考特) 的方法是正确的!
zzsxqzzsxq3000
2003-10-14
打赏
举报
回复
请看:
void allocate(char ***buf,char *tt[]) {
int i;
*buf = (char**)calloc(20,sizeof(char*));
for(i=0;i<3;i++)
buf[i] = tt[i];
}
void main()
{
char **buffer = NULL;
int i;
char *temp[10] = {"ping","guo","shu"};
allocate(&buffer,temp);
for(i=0;i<3;i++)
printf("%s\n",buffer[i]);
free(buffer);
} 这样内存的确是分配出来了,也可以传回主函数,可是函数中的赋值却不可以,为什么?
但是把 for(i=0;i<3;i++)
buf[i] = tt[i]; 这一句写到主函数里面是可以正常赋值的,
呜呼,哪位前辈可以救我,郁闷死了... .. .
rigye
2003-10-14
打赏
举报
回复
allocate(char **buf) {
*buf = (char*)calloc(20,sizeof(char*));
}
void main()
{
char *buffer = NULL;
int size;
allocate(buffer);
size = _msize(buffer);
free(buffer);
}
zzsxqzzsxq3000
2003-10-14
打赏
举报
回复
之前关于传地址如***之法也想到了,可是不行,另外就是不想用传值的方法,就是要在函数体直接修改buffer,不知哪位可以指教。
playboyxp
2003-10-14
打赏
举报
回复
char **allocate(char **buf) {
buf = (char**)calloc(20,sizeof(char*));
return buf;//没有返回值函数结束就释放变量了,你的值也就释放了
}
void main()
{
char **buffer = NULL;
int size;
buffer=allocate(buffer);
size = _msize(buffer);
free(buffer);
}
Wolf0403
2003-10-14
打赏
举报
回复
allocate(char ***buf) {
*buf = (char**)calloc(20,sizeof(char*));
}
void main()
{
char **buffer = NULL;
int size;
allocate(&buffer);
size = _msize(buffer);
free(buffer);
}
langzi8818
2003-10-14
打赏
举报
回复
应该是***,这样才是对的
!
scottZZ
2003-10-14
打赏
举报
回复
allocate(char *&buf) {
buf = (char*)calloc(20,sizeof(char*));
}
void main()
{
char *buffer = NULL;
int size;
allocate(buffer);
size = _msize(buffer);
free(buffer);
}
th_xu
2003-10-14
打赏
举报
回复
allocate(char **buf) {
*buf = (char*)calloc(20,sizeof(char*));
}
void main()
{
char *buffer = NULL;
int size;
allocate(&buffer);
size = _msize(buffer);
free(buffer);
}
liao2001
2003-10-14
打赏
举报
回复
***
C++中的野
指针
问题
文章目录 1 C和C++中的野
指针
问题
1.1 野
指针
的概念 1.2 野
指针
的由来 1.3 杜绝野
指针
的基本原则 2 C和C++中的常见内存错误 2.1 常见内存错误 2.2 内存操作的基本规则 1 C和C++中的野
指针
问题
1.1 野
指针
的概念 野
指针
的概念:
指针
变量中的值是非法的内存地址,进而形成野
指针
。 野
指针
不是NULL
指针
,是指向不可用内存地址的
指针
。 NULL
指针
并无危害,很好判断,也很好调试。 C语言中无法判断一个
指针
所保存的地址是否合法。 1.2 野
指针
的由来 如下情况可能导致野
指针
的出
C语言中的野
指针
问题
C语言中的野
指针
问题
一、野
指针
1、
指针
变量中的值是非法内存地址,进而形成野
指针
2、野
指针
不是NULL
指针
,是指向不可用内存地址的
指针
3、NULL
指针
并无危害,很好判断,也很好调试 4、C语言中无法判断一个
指针
所保存的地址是否合法二、野
指针
由来 1、局部
指针
变量没有初始化 2、
指针
所指向的变量在
指针
之前被销毁 3、使...
常见的空
指针
问题
之一,以及解决办法
常见的空
指针
问题
之一,以及解决办法 1、空
指针
出现的原因 空
指针
操作最常见是出现在判断语句中,原因是调用此方法的对象为null 代码示例: Object[] objects = new Object[30]; //此处初始化操作省略,目的是将数组中每个的元素都放一个对象进去 ........ //遍历 for(int i=0;i<objects.length;i++){ System.out.println(objects[i].toString()); //此处可能会报空
指针
异常 }
List转Map出现的空
指针
问题
前言 优化别人的代码同步进行定位排查,需要统计下别人出现的
问题
,在这里记录下我的解决办法。供后来人避免此类
问题
; 1、list通过groupingBy转成Map的空
指针
空值,null作为map的可以导致的空
指针
问题
解决办法如下: Map<String, List<TbmNewsAutoEvaluation>> fastNewsAutoEvaluationListMap = fastNewsAutoEvaluationList.stream().filter(map-&..
java.lang.NullPointerException 空
指针
问题
空
指针
出现闪退的原因就是数据为空,所以使用数据时最好都进行判空,特别是请求网络获取后台数据,你不知道后台是否在维修或是返回数据格式进行修改等
问题
,你没判空都会导致空
指针
,出现闪退 空
指针
闪退
问题
的解决办法: 1.从本获取数据:数据库,文件等 2.请求网络获取后台数据 3.从进程间获取其他进程或是线程的数据 4.activity之间的数据传递 特别是多层级的数据格式,每一层都要进行判断: 如:返回的bean为 InfoDataResponse: { id : 1, ...
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章