栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【c语言】指针的指针使用方法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【c语言】指针的指针使用方法

指针的指针一般用法是外部人申明,传入另一个函数以后由这个函数申请空间,但是需要注意的是,要在传入之前给这个指针的指针初始化。

例如

#include

typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned int u32;
typedef struct
{
	u16 value_handle;
	u8 offset;
	u8 *data;
	u16 len;
} ble_gatts_write_t;

typedef struct
{
	u16 value_handle;
	u8 offset;
	u8 **data;
	u16 *len;
} ble_gatts_read_t;
typedef struct ble_gatts_evt_param{
	u16 conn_handle;
	union
	{
		ble_gatts_write_t write;
		ble_gatts_read_t read;
	};
}ble_gatts_evt_param_t;


void ble_cae_gatts_callback(ble_gatts_evt_param_t *param){
	printf("ble_cae_gatts_callback entern");
	u8 *read_data = NULL;
	u16 read_data_len = 3;
	read_data = (u8 *)malloc(3);
	if(NULL == read_data){
		printf("11111111111111111111111");
		return ;
	}
	printf("ble_cae_gatts_callback 1n");
	read_data[0] = 0x32;
	read_data[1] = 0xff;
	read_data[2] = 0x00; 
	printf("ble_cae_gatts_callback 2n");
	*param->read.data = read_data;
	printf("ble_cae_gatts_callback 3n");
	*param->read.len = read_data_len;
	printf("read_data_len %dn",read_data_len);
	printf("ble_cae_gatts_callback dumpn");
}
void test_printf5(u8 *str,u32 length)
{
	int iii;
	printf("the str is:");
	for(iii= 0;iii  

如果屏蔽和不屏蔽这两行会是不同的结果,有兴趣的可以试试。

    param.read.data = &data;
    param.read.len = &len3;

记得释放内存的时候需要先释放内部的指针空间,然后再释放外部的。要不然会出现内存泄漏

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/302813.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号