指標常見問題(Android之JNI)

我叫阿狸貓發表於2014-02-14

問題一:不同型別的指標  不能互相轉換  一種型別的指標 指向對應的資料型別 ,否則編譯出錯

#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");
}


相關文章