指针常见问题(Android之JNI)

本文探讨了C语言中指针使用的三个常见误区:不同类型的指针不能相互转换;未初始化的指针不能直接使用;函数内的局部变量无法在其他函数中通过指针访问。通过具体的代码示例说明这些误区,并提供了相应的解决思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题一:不同类型的指针  不能互相转换  一种类型的指针 指向对应的数据类型 ,否则编译出错

#include <stdio.h> 
#include <stdlib.h>

/*
1.不同类型的指针  不能互相转换  一种类型的指针 指向对应的数据类型 
*/
main(){
	double d = 3.1415926;
	int* p ;
	p = &d;//编译出错
	printf("通过指针p,打印出double d的值:%d\n",p);
	
	system("pause");
}


问题二:未经初始化的指针 不能直接使用

#include <stdio.h> 
#include <stdlib.h>

/*
2.未经初始化的指针 不能直接使用 
*/
main(){
	int* p; 
	printf("打印指针p所指向的值:%d\n",*p);
	
	system("pause");
}



问题三:函数的变量 不能够跨函数进行访问 

#include <stdio.h> 
#include <stdlib.h>

/*
3.函数的变量 不能够跨函数进行访问 
*/
void f(int** q){//由于接收的是int*类型的内存地址类型所以写成int**,也叫二级指针
	int i = 3;
	printf("f函数中i的地址 %#x\n",&i);
	
	*q = &i;
} 

main(){
	int* p;
	f(&p);
	
	printf("main函数中p的地址:%#x\n",p);
	
	printf("通过指针p将f()中的i的值打印:%d\n",*p);//-1,不同编译器打印结果不一样,xp是-1,我win7 64位1972800725
	
	system("pause");
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值