本文主要介紹關於c語言的知識點,對【C——指針】和【c+ 指針】有興趣的朋友可以看下由【Java學不會】投稿的技術文章,希望該技術和經驗能幫到你解決你所遇的C語言學習筆記相關技術問題。
地址
變量的指針就是變量的地址
1.2、指針的定義 定義指針的一般形式為:
基類型 *
指針變量名; int *p;
*
: 指針說明符 1.3、指針的賦值
通過取地址
運算符賦值:&
int a,*p;
p=&a;
通過另一個指針
int a,*p,*q;
q=&a;
p=q;
空指針
的定義
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
數組名
是地址常量,不可賦值
指針
是變量,可以賦值
指針比較大小就是所在位置比較大小
指針相減就是位置相減
指針不可相加
指針
,使用時無需定義長度 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版權協議。
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。