A. 在c語言中指針的指針是什麼意思
我們知道變數在計算機內是佔有一塊存貯區域的,變數的值就存放在這塊區域之中,
在計算機內部,
通過訪問或修改這塊區域的內容來訪問或修改相應的變數。turbo
c語言中,
對於變數的訪問形式之一,就是先求出變數的地址,然後再通過地址對它進行訪問,這就是這里所要論述的指針及其指針變數。
所謂變數的指針,
實際上指變數的地址。變數的地址雖然在形式上好象類似於整數,
但在概念上不同於以前介紹過的整數,
它屬於一種新的數據類型,
即指針類型。turbo
c中,
一般用指針來指明這樣一個表達式&x的類型,而用地址作為它的值,也就是說,
若x為一整型變數,
則表達式&x的類型是指向整數的指針,而它的值是變數x的地址。同樣,
若double
d;則&d的類型是指向以精度數d的指針,而&d的值是雙精度變數d的地址。所以,
指針和地址是用來敘述一個對象的兩個方面。雖然&x、&d的值分別是整型變數x和雙精度變數d的地址,
但&x、&d的類型是不同的,
一個是指向整型變數x的指針,
而另一個則是指向雙精度變數d的指針。在習慣上,很多情況下指針和地址這兩個術語混用了。
我們可以用下述方法來定義一個指針類型的變數。
int
*ip;
首先說明了它是一指針類型的變數,注意在定義中不要漏寫符號*,否則它為一般的整型變數了。另外,在定義中的int
表示該指針變數為指向整型數的指針類型的變數,
有時也可稱ip為指向整數的指針。ip是一個變數,
它專門存放整型變數的地址。
指針變數的一般定義為:
類型標識符
*標識符;
其中標識符是指針變數的名字,
標識符前加了*號,表示該變數是指針變數,
而最前面的類型標識符表示該指針變數所指向的變數的類型。一個指針變數只能指向同一種類型的變數,
也就是講,
我們不能定義一個指針變數,
既能指向一整型變數又能指向雙精度變數。
指針變數在定義中允許帶初始化項。如:
int
i,
*ip=&i;
注意,
這里是用&i對ip初始化,
而不是對*ip初始化。和一般變數一樣,對於外部或靜態指針變數在定義中若不帶初始化項,
指針變數被初始化為null,
它的值為0。turbo
c中規定,
當指針值為零時,
指針不指向任何有效數據,
有時也稱指針為空指針。因此,
當調用一個要返回指針的函數時(以後會講到),
常使用返回值為null來指示函數調用中某些錯誤情況的發生。
B. C語言中指向指針的指針是什麼意思
指針其實也是個變數(只要是變數就一定有相應的內存空間) 只是這個變數比較的特殊
它只能存放別的變數的地址 變數時在內存中是有地址的
你要明確兩概念:變數值和變數地址
變數值:是變數本身的內容
變數地址:是該變數在內存中的位置編號
C. c語言中的指針!!
哇,非常牛B的東西,被你說的沒用了 哈哈
比如數組名作函數參數,數組名本身就是一個指針
調用函數是不能改變實參,因此調用指針,就可以改變主函數中的變數
再比如數據結構中的各種結構,都是通過對指針的操作
最常見的單鏈表,他結構相當於數組,數組元素間的物理位置相鄰,但是鏈表物理位置可以不相鄰,通過指針首尾鏈接在一起
等等,說不完哈
D. c語言中的指針是什麼
1.指針就是1個變數,他也是一個存放內容的內存空間。
2.指針存放的內容是另一個內存空間的起始地址。不同於一般變數存放的就是變數值。
3.取值操作符*對於指針的作用是取得指針變數存放的內存地址裡面的值,不加*取出的是指針變數存放的值(就是一個內存地址)
上面3步,step by step 你就理解了.
E. 在C語言中什麼是指針
指針是C語言裡面的一個重要概念,也是C語言的難點之一.指針可以表示許多復雜的數據結構,如隊列,棧,鏈表,樹,圖等.
要學習指針,應該先了解以下幾個概念:變數的地址,變數的內容,直接定址,間接定址.
變數的地址:變數在內存中所佔存儲空間的首地址.
變數的內容:變數在內存的存儲單元中存放的數據.
如:
int a=10;//兩個位元組
假設a占的內存單元的地址為:2020和2021
則內存單元的地址為2020的是存放數據a(即10)的低位元組,內存單元的地址為2021的是存放數據a即10)的高位元組.
如果將變數a的首地址2020保存到另一個變數p中,那麼為了訪問變數a,我們可以通過變數p得到a的的地址2020,再到該地址中訪問變數a.
直接定址:直接按變數名來存取變數的內容的訪問方式.
專門用於存放地址型數據的變數是指針變數,如上面所說的p.
間接定址:通過指針變數(如P)間接存取它所指向的變數(如a)的訪問方式稱為間接定址.
在上例中,a的地址用&a表示.由於p是保存地址型數據的,所以p=a的地址=&a
在此p就叫做指針(或指針變數)
其定義如下:
int *p;
指針有好多好處:
1.為函數提供修改變數值的手段.
2.為C的動態內存分配提供支持.
3.為動態數據結構提供支持.
4.可以改善程序的效率.
F. c語言中指針是怎麼回事
指針就是值為內存地址的變數,通過指針可以直接訪問某個指定地址的內存空間的內容。
而變數名本身就是變數在內存中的地址,所以將指針指向某個變數,就可以通過指針來訪問這個變數的值了。
G. C語言中的指針問題
這樣的"xxxx"應該叫做字元串常量,是存儲在常量區域的,所以不應該修改它。
char a[]="don't know"
是定義了一個數組,數組內的數據復制了字元串的內容。
char *a="don't know"
第二種編譯的時候就應該給你警告了,不能用非常量指針指向一個常量,應該是這樣
const char *a="don't know"
所以不能通過指針改變它。
H. C語言中的指針是什麼意思
指針是一個用來指示一個內存地址的計算機語言的變數或中央處理器(CPU)中寄存(Register)。指針一般出現在比較近機器語言的語言,如匯編語言或C語言。面向對象的語言如Java一般避免用指針。指針一般指向一個函數或一個變數。在使用一個指針時,一個程序既可以直接使用這個指針所儲存的內存地址,又可以使用這個地址里儲存的變數或函數的值。
大家都認為,c語言之所以強大,以及其自由性,很大部分體現在其靈活的指針運用上。因此,說指針是c語言的靈魂,一點都不為過。
簡單比方……比如你是一個變數,那麼你家的地址就相當於是你的指針, 我可以通過找到你家地址而找到你。
I. c語言中指針怎麼使用
1、使用場景
使用指針時,必須將它指向一個變數的地址或者為它分配空間方能使用,如下所示:
#include<stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
int a[5]={0,1,2,3,4};
int *b,*d;
int c=2;
int *e=a; //e指向a數組首地址
//*b=2; 無法直接初始化
//printf("%d ", *b);
e=e+2; //移動兩個地址單元
d=&c; //d指向c的地址來表示值
c=4; //修改原c變數的值,d指針的值會發生改變
b=(int *)malloc(sizeof(int));//為b分配一個int型空間來直接存儲值
*b=2;//分配空間後可以直接賦值了
printf("this is e,b,c,d :%d %d %d %d ",*e,*b,c,*d);
2、類型說明
(1)int *a :表示一個指向int型變數的指針,指向的是變數的地址單元
(2)char *b:表示一個指向char變數的指針
*a表示的是這個指針指向地址的值,a為此指針本身的地址,這點要明確,一般用*(a+1)、*(a+2)來表示值,如:
int nums[5]={0,1,2,3,4};
int *a=nums;
printf("%d %d %p ",*a,*(a+1),a);
(9)c語言中的指針擴展閱讀:
指針的運算
指針指向變數地址,若原變數的內容發生了變化,它本身也會發生變化,指針之間的運算一般為值運算和地址運算
(1)值運算:直接通過*運算方式,像a+*(a+1),結果為第一個元素與第二個元素相加。
int nums[5]={0,1,2,3,4};
int *a=nums;
(2)地址運算:通過a+i的方式.指針會指向a的下i個地址。
int nums[5]={0,1,2,3,4};
int *a=nums;
a=a+2;
printf("%d ",*a);
結果輸出2。