c語言中關於指向陣列的指標C語言中關於指向陣列的指標

2021-03-04 07:02:26 字數 1591 閱讀 8199

1樓:

char str[100];

char *pi=str; //相當於char *pi ;pi=str;

char **ppi=*pi;//這個地方抄錯了。應為char **ppi=π

定義加*表明這是指標型別的變數

用的時候,就是用的指標,加*幹什麼。

只有取指標所指變數的值,或給指標所指的變數賦值的等涉及指標所指的變數的時候,

才會又加*號,表示獲取或改變,指標所指變數的值。

char x=10;

*pi =x; //給指標所指的變數賦值,改變指標所指變數的值(改變*pi) 。

x=*pi; //取指標所指的值,取指標pi所指的變數的值(表示為*pi)賦值給x。

2樓:匿名使用者

pi ppi是指標 帶*是取值的意思

*pi=str 意思是把str這個陣列的首地址 放在pi所指的空間裡 換句話說就是pi指向了str陣列。用pi+1之類的就可以指向陣列裡面的東西 *(pi+1)等同於str[1]

3樓:匿名使用者

因為不管是str還是pi, ppi都指的是地址,函式呼叫時只需要知道引數的地址就行,然後再去取裡邊的值,而不用加上星號來傳遞裡邊的值。

4樓:匿名使用者

因為陣列的名字,本身就是指向陣列頭的指標。另外char **ppi=*pi;是不對的吧。這意思是給一個指標賦值一個常數,這樣的賦值只允許右值為0的

5樓:

你給的第三條語句語法是錯的,應該是char **ppi=π

6樓:連嘉悅牢義

首先要明白,指標陣列中儲存的是指標,也就是說兩個元素都是指標,而且存放的也的確是「a」和「a」的地址,但要知道字串和字元是兩個不同的資料型別,也就是說雖然存放的地址是一樣的,但指標的型別不能理解為是指向字元「a」和「a」的指標,應該是指向字串「abcd」和「abcd」的,明白的麼?

7樓:端麗芳表曄

要點:理解陣列名其實就是一把指標!它指向所有元素的第一個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語言實引數組與形引數組問題,關於c語言中陣列作為函式引數的函式之間呼叫問題

這個問題是這樣的了,因為你的陣列定義的是二維大小是20 20 地址空間已經分配好了,而但你輸入的m和n的值小於20的時候,你只是先給第一維賦值,如果輸入的數字大於20,在對第二維賦值,但你輸入一些小的m和n時,其實二維陣列你還沒有賦值,他們的值還是你預設給的0啊,而當你用二維陣列去讀數的時候 a 0...

c語言中用指標的好處有哪些C語言中指標的作用是什麼?

指標非常的好,它把相同的事物歸類,然後把事物做出標記,避免給相同的特點做變數。比如說你和你同學,你們兩個人都有心臟 肝 肺等器官,如果命名心臟1 心臟2這樣比較麻煩,這時如果用上指標,指向你說心臟時說的是你的心臟,指向你同學時說的是你同學的心臟,如果人非常的多,你不用指標,那麼命名心臟1 2 3 4...

C語言中陣列問題

這段 是統計你輸入裡邊0 9的數字個數,輸入的字元用asc碼錶示,c的變數指代輸入的字元,那麼c 0 c 9 這個條件就判斷輸入的是否為數字,c 0 是一個表示式,將會返回你所輸入字元的與字元 0 的差值,例如你輸入的值是字元 1 這個表示式為 1 0 兩個在asc碼中差值為1,故shuzi中下標為...