Android JNI编程(三)——C语言指针的初步认识、指针变量、互换两个数、函数返回多个值...
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Android JNI编程(三)——C语言指针的初步认识、指针变量、互换两个数、函数返回多个值...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                版權聲明:本文出自阿鐘的博客,轉載請注明出處:http://blog.csdn.net/a_zhon/。
目錄(?)[+]
一.什么是指針?
簡單來說: 指針就是內存地址 ???? 內存地址就是指針。來看個小案例
#include<stdio.h> #include<stdlib.h> /**指針就是內存地址內存地址就是指針*/ main() {//定義一個int類型的變量i,并且賦值為10int i=10;//定義一個int類型的一級指針變量p int* p; //把i對應的地址給p變量 p=&i; //指針取值*p:把p變量地址對應的值取出來 printf("*p=%d\n",*p); //打印地址值 printf("p的地址值%#x\n",p); system("pause"); }總結:p保存的是一個地址值,而*p就是去取地址值所對應的值。
二.下面通過四個小案例來加深對指針和指針變量的理解,我們先說一下指針和指針變量的區別:
1.第一個例子,如果修改i的值,p值有變化嗎?
#include<stdio.h> #include<stdlib.h>main() {int i=100;//p就是我們的指針變量,存放地址值 int *p=&i; printf("i值修改之前,p的地址值是%#x\n",p); i=200; printf("i值修改之后,p的地址值是%#x\n",p); }答案是沒有變化的:因為此時修改了i值,p引用的還是i的地址所以p不會有變化
2.第二個例子,如果修改p的值,i值有變化嗎?
#include<stdio.h> #include<stdlib.h>main() {int i=100;int *p=&i; printf("p值修改之前,i的值是%d\n",i); int j=200; p=&j; printf("p值修改之后,i的值是%d\n",i); }答案是沒有變化的:因為此時將j的地址給了p,而i并沒有動所以i的值不變
3.第三個例子,如果修改i的值,*p值有變化嗎?
#include<stdio.h> #include<stdlib.h> main() {int i=100;int *p=&i; printf("i值修改之前,*p的值是%d\n",*p); i=200; printf("i值修改之后,*p的值是%d\n",*p); }答案是有變化的:因為此時修改了i值,*p引用的是i的地址指向的值,所以*p的值發生了改變
4.第四個例子,如果修改*p的值,i值有變化嗎?
#include<stdio.h> #include<stdlib.h>main() {int i=100;int *p=&i; printf("*p值修改之前,i的值是%d\n",i); *p= 200; printf("*p值修改之后,i的值是%d\n",i); }答案是有變化的:因為*p=200;此時是將*p引用的值修改為200,也就是修改了i的值。
三:”*”號的三種含義
四:操作內存地址實現將兩個數進行互換
1.第一種:使用中間變量來互換,這一種也是我們最常用的一種方法
#include<stdio.h> #include<stdlib.h> /**互換兩個數*/ main() {int a = 100;int b = 150; //通過一個中間變量來互換 int temp = a; a = b; b = temp; printf("a的值:%d\n",a); printf("b的值:%d\n",b); system("pause"); }2.第二種:我們知道C語言是可以直接操作內存的,所以我們可以直接來改變a,b兩個的內存地址指向的值。
#include<stdio.h> #include<stdlib.h>/**互換兩個數*///通過互換兩個數的地址值,來互換數字 void changeAdress(int* a,int* b) { //temp取的是指針變量a對應的內存地址的值也就是100 int temp = *a; //把a對應內存地址的值 修改為b對應內存地址的值 *a = *b; //把b對應內存地址的值 修改為temp *b = temp; } main() { int a = 100; int b = 150; //分別將取a,b的地址 changeAdress(&a,&b); printf("a的值:%d\n",a); printf("b的值:%d\n",b); system("pause"); }五:函數返回多個值
#include<stdio.h> #include<stdlib.h> /**函數返回多個值通過修改指針變量引用的值,達到返回多個值的效果。*/ void close(int* a,int* b) {*a=0; *b=0; } main() { int a=1; int b=1; //調用函數 close(&a,&b); printf("a=%d\n",a); printf("b=%d\n",b); //是docs窗口停留 system("pause"); }總結起來其實并不難,互換就是將 a原來指向100改成指向150,將 b原來指向150改成指向100;也就是說a,b的地址并沒有改變,改變的是他們的值;好了到這里對指針,指針變量的初步認識就講完了。
轉載于:https://www.cnblogs.com/Free-Thinker/p/6169313.html
總結
以上是生活随笔為你收集整理的Android JNI编程(三)——C语言指针的初步认识、指针变量、互换两个数、函数返回多个值...的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Android简易实战教程--第四十七话
- 下一篇: Web页面报错: Eval()、XPat
