C——指針(c+ 指針)


本文主要介紹關於c語言的知識點,對【C——指針】和【c+ 指針】有興趣的朋友可以看下由【Java學不會】投稿的技術文章,希望該技術和經驗能幫到你解決你所遇的C語言學習筆記相關技術問題。

c+ 指針

指針 1、指針與變量1.1、指針的概念1.2、指針的定義1.3、指針的賦值1.4、指針的操作1.5、函數之間的地址傳遞 2、指針與一維數組2.1、一維數組的地址2.2、指向一維數組的指針2.3、函數之間對一維數組的引用 3、指針與二維數組3.1、二維數組的地址3.2、指向二維數組的指針 4、數組指針5、指針數組5、函數指針6、指針函數

1、指針與變量 1.1、指針的概念 指針即地址 變量的指針就是變量的地址 1.2、指針的定義 定義指針的一般形式為: 基類型 *指針變量名; int *p; *: 指針說明符 1.3、指針的賦值

通過取地址運算符賦值:&

int a,*p;
p=&a;

通過另一個指針

int a,*p,*q;
q=&a;
p=q;

空指針的定義

NULL表示空,其值為 0空指針定義后不能引用
int *p=NULL;	==	int *p=0;
1.4、指針的操作 &取地址 運算符 *去內容 運算符:只有在定義時 * 為指針說明符,其它位置為 取內容 運算符 1.5、函數之間的地址傳遞

實參<——>形參

實參:地址 形參:指針

地址傳遞是雙向影響

void fun(int *x,int *y){
   
	*x+=*y;
	*y+=*x;
}
int main(){
   
	int a=3,b=5;
	fun(&a,&b);
	printf("%d,%d\n",a,b);
	return 0;
}
輸出結果:8,13
2、指針與一維數組 2.1、一維數組的地址 int arr_a[10]; arr_a是 數組名,即一維數組的 首地址,第0個(arr_a[0])元素的地址 數組名是常量(地址常量) 一維數組常用表達式: a<==>&a[0] a+i<==>&a[i] *(a+i)<==>a[i]
int a[]={
   1,2,3,4,5};

a[0]=1		*(a+2)=3
a[2]=3		*a=1
2.2、指向一維數組的指針

指針指向數組名,即把數組的首元素的地址

指針指向哪個元素,哪個就是首元素

指針可以做加減元素,即后移前移

int a[]={
   12,24,36,48,60},*P,*q;
p=a;q=p+1;

*p=12		*(p+2)=36
q[2]=48		*q+4=28

*++p地址后移,先后移再使用;*p++先使用,再后移

++*p地址的值+1

數組名是地址常量,不可賦值

指針是變量,可以賦值

指針比較大小就是所在位置比較大小

指針相減就是位置相減

指針不可相加

2.3、函數之間對一維數組的引用 實參形參傳遞方式數組元素變量值傳遞數組元素地址指針地址傳遞數組名數組或指針地址傳遞 實參數組: 是一個數組,使用時需要定義長度 形參數組: 本質上是 指針,使用時無需定義長度 3、指針與二維數組 3.1、二維數組的地址 int a[3][4]; a是二維數組名,即二維數組的首地址, 第0行(a[0][0]) 的地址 二維數組地址和內容的引用方式: * (a+1)+2: 第1行第2列的 地址* (*(a+2)+3): 第2行第3列的 內容 a[1]+2: 第1行第2列的 地址* (a[2]+3): 第2行第三列的 內容 *、[]出現任意一個代表地址 *、[]出現任意兩個代表內容 3.2、指向二維數組的指針 指針指向二維數組,看作一維數組
int a[2][3]={
   1,2,3,4,5,6},*p;
int m,s;
p=&a[0][0];
m=(*p)*(*(p+2))*(*(p+4));
s=p[1]+p[3]+p[5];

m=15		s=12
4、數組指針 int (*p)[4]; 說明:p為類型為int型數組的指針。數組的指針指向數組長度為4的數組。 含義: 一個指向M個整型元素一維數組指針。 5、指針數組 int *p[3] 優先級:()>[]>* 說明:p是由三個指針變量構成的數組。簡稱指針數組,即這是一個指針的數組,里面的每一個元素都是指針(存放的是地址)。 5、函數指針 int (*p)(); 說明:p是返回值為整型函數的指針 6、指針函數 int *p(); 說明:p是返回值為整型指針的函數

本文《C——指針》版權歸Java學不會所有,引用C——指針需遵循CC 4.0 BY-SA版權協議。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: