日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android JNI编程(三)——C语言指针的初步认识、指针变量、互换两个数、函数返回多个值...

發布時間:2025/3/14 Android 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android JNI编程(三)——C语言指针的初步认识、指针变量、互换两个数、函数返回多个值... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄(?)[+]

一.什么是指針?

簡單來說: 指針就是內存地址 ???? 內存地址就是指針。來看個小案例

#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的值。

    三:”*”號的三種含義

  • 數學運算符:3 * 7 = 21
  • 定義指針變量:int* p;
  • 指針運算符(取值):*p表示取p對應內存地址對應的值
  • 四:操作內存地址實現將兩個數進行互換

    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语言指针的初步认识、指针变量、互换两个数、函数返回多个值...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。