1樓:王天旻
#include
main()
;int *p;
p=a;
printf("%d",*(p+1));
}最原始的方法,p加幾就只向哪一位。不加就指向0位;
移回第一位的問題我也碰到過,可以這樣
int *q;
q=p;
然後對p操作,最後
p=q;
移回來把指標當引數時常有。
2樓:長巷煙雨
1樓說錯了, 陣列名是常量指標 而不是指標常量。
樓主的問題我理解的不是很明白。。。
int array[10];
int *p;
p = array; // p指向陣列的第一位p = array + 1; //p指向陣列的第二位,依次類推。不知道是不是問的這個問題
補充:struct _student crecord[c_n]=;
struct _student *cp
cp=&crecord;
你可以 cp->m_sznum[1]; 或者 (*cp).m_sznum[1]; 兩種方式都可以
3樓:
有的,看示例:
int a[10];
int *p ;
p=a;
要p指向的第i(i>=0 && i<10)位可以使用p = a+i;即可實現。
這樣指標p就一直指向陣列的首地址。
4樓:風若遠去何人留
兩種方式:
1 在移動的時候,記錄移動的偏移量,存在變數n中。這樣對於移動後的指標p,計算
p-=n;
就是將其移動到第一位。
2 更常用的方式為,在有此類需要時,運算前儲存原始的位置,即定義同類變數p1,指向第一位,比如計算前做p1 = p;
這樣在需要移回時,只需要p = p1即可。
如果p移動時與原始陣列在同一個作用域內,那麼也可以直接重新複製p為原始陣列名。
5樓:匿名使用者
補充:你要指向陣列的話只能定義一個char型別的指標。例如:
char *p;
p=cp->m_sznum+n;//(n=0,1,2,...)
6樓:匿名使用者
不明白你的意思 陣列名預設就是指向陣列的第一位 但是它是一個指標常量
7樓:難得當歌對酒時
令其等於陣列名就可以移回第一位,然後移到哪一位就加幾。
8樓:匿名使用者
把資料下標為0的元素指標賦值給它
c語言中關於指向陣列的指標
9樓:
char str[100];
char *pi=str; //相當於char *pi ;pi=str;
char **ppi=*pi;//這個地方抄錯了。應為char **ppi=&pi;
定義加*表明這是指標型別的變數
用的時候,就是用的指標,加*幹什麼。
只有取指標所指變數的值,或給指標所指的變數賦值的等涉及指標所指的變數的時候,
才會又加*號,表示獲取或改變,指標所指變數的值。
char x=10;
*pi =x; //給指標所指的變數賦值,改變指標所指變數的值(改變*pi) 。
x=*pi; //取指標所指的值,取指標pi所指的變數的值(表示為*pi)賦值給x。
10樓:匿名使用者
pi ppi是指標 帶*是取值的意思
*pi=str 意思是把str這個陣列的首地址 放在pi所指的空間裡 換句話說就是pi指向了str陣列。用pi+1之類的就可以指向陣列裡面的東西 *(pi+1)等同於str[1]
11樓:匿名使用者
因為不管是str還是pi, ppi都指的是地址,函式呼叫時只需要知道引數的地址就行,然後再去取裡邊的值,而不用加上星號來傳遞裡邊的值。
12樓:匿名使用者
因為陣列的名字,本身就是指向陣列頭的指標。另外char **ppi=*pi;是不對的吧。這意思是給一個指標賦值一個常數,這樣的賦值只允許右值為0的
13樓:
你給的第三條語句語法是錯的,應該是char **ppi=π
14樓:連嘉悅牢義
首先要明白,指標陣列中儲存的是指標,也就是說兩個元素都是指標,而且存放的也的確是「a」和「a」的地址,但要知道字串和字元是兩個不同的資料型別,也就是說雖然存放的地址是一樣的,但指標的型別不能理解為是指向字元「a」和「a」的指標,應該是指向字串「abcd」和「abcd」的,明白的麼?
15樓:端麗芳表曄
要點:理解陣列名其實就是一把指標!它指向所有元素的第一個inta[10];
則它的記憶體分佈:a[0]
a[1]
a[2]
a[3]
a[4]
a[5]
a[6]
a[7]
a[8]
a[9]
陣列名a
就是指向了第一個元素
a[0]
的地址(注意是地址)所以上面的也可表示為:
*(a+0)
*(a+1)
*(a+2)
*(a+3)
*(a+4)
*(a+5)
*(a+6)
*(a+7)
*(a+8)
*(a+9)這是一樣的!而如果定義一把指標並賦值:
int*p;p=
a;則p
現在和a都指向了第一個元素a[0]的地址,所以它的用法和a一樣如:*(p+0)=p[0]=a[0]=*(a+0)
,*(p+1)=p[1]=a[1]=*(a+1)……看領會下就懂了哦~~~
c語言中指向陣列元素的指標, 有一點是 "一個指標變數可以把陣列名或第一個元素的地址賦予指標變
16樓:hdu我愛c語言
比如說陣列 int a[10];之後你第一個指標 int *p;p=a或者p=&a[0],這兩個是同一個意思。
你這樣操作之後 p ,a ,&a[0],基本就是同一個意思。
17樓:唐麗梅
就是當你定義一個陣列m的時候,然後定義一個變數pm指向它,則這個變數pm一開始的時候指向的是這個陣列m的首地址。無論這個陣列m裡面有沒有值,都是指向第一個元素m[0]。
陣列名是陣列名,不是首地址。
但是一開始分配的時候,陣列的首地址正好是第一個元素的首地址。
18樓:開尋芹
&m就是首地址,不是指向。
19樓:匿名使用者
其實很多課本上的話都說的比較費解!!(也是這麼摸索過來的)這句話的意思真正來說是強調陣列的陣列名其實就是一個指標,它指向該陣列的首地址。比如int a[10],這個陣列內有10個int型元素,當你用你的第一個元素時,會使用a[0],它的作用就是*(a + 0),根據你學過指標知識,意思就是讓指標a偏移0次後取出資料。
相應的a[1]~~~其實都是在陣列首地址的基礎進行偏移後得到的。所以當然可以把陣列名賦予給一個指標變數啊。
c語言中指向陣列元素的指標, 有一點是 "一個指標變數可以把陣列名或第一個元素的地址賦予指標變 20
20樓:匿名使用者
就是指向每一行的指標,比如說二維陣列a[2][3];a[0]代表的是二維陣列第零行的首地址相當於&a[0][0];a[1]代表的是二維陣列第一行的首地址相當於&a[1][0];a[0]+1代表的是二維陣列第零行,第一列的地址相當於&a[0][1]
c語言中指標變數怎麼理解?怎麼用
指標變數是一個變數,它儲存的是另一個變數的記憶體地址。你如果知道了這個指標變數儲存的值,就可以知道它所指向變數的記憶體地址,於是就可以間接訪問到那一個變數。定義 指標變數型別 指標變數名1,指標變數名2,例如 int main void 把指標作為函式的引數傳遞,可以使函式可以訪問函式外部的變數,例...
關於c語言中指標賦值的問題,關於C語言中指標賦值的問題
計算天下 你這樣想說明你還沒有真正理解記憶體和指標。int a 表示編譯器隨機取出一個空閒的地址分配給a,不妨設為00000000,長度為sizeof int 不同編譯器可能不同。int p 也表示隨機取出一個空閒的地址分配給p,不妨設為000000f0,長度一般為4個位元組,則這四個位元組現在儲存...
c語言中指標做函式引數傳遞二維陣列
include void fun int p1 3 int p2 3 int main int p1 3 3 int p2 3 3 int i 0,j 0 fun p1,p2 for i 0 i 3 i for j 0 j 3 j printf d p2 i j printf n return 0 ...