當前位置:首頁 » 編程語言 » c語言中數組指針可以裝地址嗎
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中數組指針可以裝地址嗎

發布時間: 2023-03-14 04:44:39

c語言中指針變數只能存儲地址

存放地址的變數稱為指針變數。指針變數是一種特殊的變數,它不同於一般的變數,一般變數存放的是數據本身,而指針變數存放的是數據的地址。
假設在程序中聲明了1個int型的變數a,其值為68。系統為變數a分配的首地址為0X65FDF4H,pa是存放變數a地址的指針變數,即pa中存放的值為0x065FDF4H。
對變數a的訪問有兩種方式:一是直接按地址0x065FDF4H找到a的存儲單元,從而對變數a進行訪問;二是按系統為pa分配的地址先找到pa,然後根據pa的值(即變數a地址0x065FDF4H)找到變數a在內存中的存儲單元,從而對變數a進行訪問。對於前一種訪問方式稱為直接訪問方式,後一種訪問方式稱為間接訪問方式。
如果一個指針變數存放的是某個對象的地址,則稱這個指針變數指向該對象。在C++程序設計中,指針變數只有確定了指向才有意義。
1. 定義指針變數的一般形式如下:
類型名*指針變數名1,*指針變數名2,... *指針變數名n ;
2. 空指針
空指針是一個特殊的指針,它的值是0,C語言中用符號常量NULL(在stdio.h中定義)表示這個空值,並保證這個值不會是任何變數的地址。空指針對任何指針類型賦值都是合法的。一個指針變數具有空指針值表示當前它沒有指向任何有意義的東西。
3. void指針
(void *)類型的指針叫通用指針,可以指向任何的變數,C語言允許直接把任何變數的地址作為指針賦給通用指針。但是有一點需要注意void*不能指向由const修飾的變數,eg const int test; void * ptv; ptv = &test;第三句是非法的,只有將ptv申明為const void * ptv;上述第三句(ptv = &test),才是合法的.
當需要使用通用指針所指的數據參加運算時,需要寫出類型強制轉換。如通用指針ptv 所指空間的數據是整型數據,p是整型指針,用此式轉換:p=(int *)ptv ;

② C語言中指針變數只能存儲地址

指針變數是一個變數,它保存的是另一個變數的內存地址。你如果知道了這個指針變數保存的值,就可以知道它所指向變數的內存地址,於是就可以間接訪問到那一個變數。
定義:指針變數類型
*指針變數名1,
*指針變數名2,
...
;
例如:
int
main(void)
{
int
*p;
/*定義*/
int
a;
p
=
&a;
/*把a的地址賦值到p中*/
*p
=
1;
/*間接訪問a*/
return
0;
}
把指針作為函數的參數傳遞,可以使函數可以訪問函數外部的變數,例如:
void
swap(int
*a,
int
*b)
{
int
c;
c
=
*a;
*a
=
*b,
*b
=
c;
}
指針也可以用於傳遞數組,數組名本身就是一個指針:
void
func(int
a[],
int
n)
{
.....
}
指針還可以指向指針,指向結構體(struct),指向數組
int
**p;
/*指向int指針*/
struct
xxx
*p;
int
(*p)[100];
/*指向一個int[100]數組,括弧不可少*/

③ c語言中 指針的用法以及與地址的區別

果是在定義變數時候加在前面。
簡單的理解,是在定義變數的時候使用呢,還是在訪問變數的時候使用,就是你看它是在哪裡使用,這里把指針指向的值取出來賦給b,意思是這個變數是指針變數,如
char
*a;
如果是在訪問變數的時候加在前面,意思是取這個地址中指向的值,如
char
b=*a;
上面定義了a是一個字元指針