關於c語言陣列和指標的問題,關於C語言陣列和指標的乙個問題

時間 2022-04-15 09:52:00

1樓:

c 語言裡

(1)形式邏輯不成立。

(2)要分清 乙個形式 出現在 宣告裡,還是 出現在語句裡,

(3)另外,字元變數 與 普通變數 有些 不同。

下面只談字元:

宣告 char s[10]="hello"; -- s 是 陣列, 初始化 "hello\0". 自動加"\0"

宣告 char *p; -- p 是 指標。

宣告 char *p=s; -- p 是 指標,初始化 指向 s 的 始位址。

宣告 char *p=&s[0]; -- 與上面一樣,p 是 指標,初始化 指向 s 的 始位址。

語句: printf("%s\n",p); -- 列印出 hello

語句: printf("%s\n",*p); -- 錯

語句: printf("%c\n",*p); -- 列印出字元h

語句: printf("%d\n",*p); -- 列印出字元h 的ascii 十進位制 值 104

語句: printf("%u\n", &p); -- 列印出p的位址,無符號數

語句:p=s; -- 把 陣列 的 始位址 賦給 p

語句:p=&s; -- 錯

語句:*p=s; -- 錯

語句: *p=&s;-- 錯

語句: s[2]='l'; -- 對。hello 變 hello

--------------------------

2樓:抗之

你的問題有些地方不能明確說明問題,給你從新舉個列子吧:

int *p1,*p2,a,s[5];

int *p1=&a; /*指標變數初始化賦值*/p2=&a; /*將變數a的位址賦值給指標變數p2*/p1=p2; /*p1和p2都是指標變數,把p2的值賦給p1*/p1=s; /*把陣列s的首位址賦給指標變數p1*/p1=&s[3]; /*把陣列元素s[3]的位址賦給指標變數p1*/

3樓:社會民生殺手

*p=&s,p=&s錯誤

*p=s相當於

char s[10]=,*p;

p=a;

c語言的問題,指標陣列

4樓:匿名使用者

改變不了,字串常量是改不了的,你可以試試char *p = "aaaaa";

p[1] = b;這樣是改不了的

只能定義二維陣列才可以改

char p[3][100] = ; 這樣才可以改,不要問為什麼,字串常量就是不能改

5樓:千鋒教育

直接讓指標指向另乙個字串即可

p[0]="aaaa";

6樓:橙

這樣定義指標指向的字串是無法修改的。

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

7樓:

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。

8樓:匿名使用者

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

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

9樓:匿名使用者

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

10樓:匿名使用者

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

11樓:

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

12樓:連嘉悅牢義

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

13樓:端麗芳表曄

要點:理解陣列名其實就是一把指標!它指向所有元素的第乙個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語言中:陣列指標與指標陣列有什麼區別?

14樓:匿名使用者

陣列指標是指向這個陣列首位址的指標,指向物件是這個陣列;

指標陣列是存放一類指標的陣列,這個陣列的每個元素都是乙個指標;

例子:int a[10];

int* s;

s = a;//這裡s就是乙個陣列指標,它的值就是陣列a 的首位址;當然,如果a是乙個整數,那s就是乙個指向整型的指標;

int a;

int* s[5];

for(int i=0;i<5;i++)s[i]=a;

//這裡s就是乙個指標陣列,它的每個元素都是整型變數a的位址應該算比較明白了吧

謝樓上提醒

15樓:天雲一號

int (*p)[4]; // 定義乙個陣列指標,指向含4個元素的一維陣列,陣列元素是int型別。

int *p[4]; // 定義乙個指標陣列,陣列中每個元素是乙個指標,指標指向**就要根據程式來定了。

判斷陣列指標與指標陣列主要通過運算子的優先順序來判斷。

int (*p)[4]; // 由於( )的優先順序高,說明p是乙個指標,指向乙個一維陣列的指標

int *p[4]; // 由於[ ]的優先順序高,先與p結合成為乙個陣列,再由int*說明這是乙個整型指標陣列

16樓:匿名使用者

1.大概說一下這三種

int * a;            這叫整型指標   這玩意兒不能指向陣列,搞清楚指向的是陣列首元素

int (* b);       這叫整型陣列指標     意思是指向陣列的指標

int * c[5]=null;          這叫整型指標陣列     意思是儲存指標的陣列

下來舉個例子,理解一下:

2.定義乙個陣列,下面舉例解釋

int i[5]=;        //定義整型陣列,五元素皆為0

int n[5][5]=;            //定義二維陣列

3.三種分別舉例

(a的例子)

a=i;         //這裡i是陣列名,i相當於&i[0]。陣列名相當於是陣列i的首位址。此時* a指向陣列i首元素。

a++;然後輸出就是i[1]的值

(b的例子)

b=n;        //二維陣列名相當於n[5]這個陣列,注意這塊兒,這塊兒最難搞清楚。n代表的不是第一行第乙個元素的位址,而是代表第一行元素的所有位址的陣列。這塊的指標陣列b相當於存放了n陣列第一行的所有元素的位址。

//這塊的陣列指標b和上面的指標a比較,a指向的是陣列的首元素,而b指向的是整個陣列(或者說是存放了整個一維陣列的多個元素(二維陣列由一維陣列構成,二維陣列的第一行即是乙個一位陣列))

然後我們輸出(* b)[2]相當於輸出了n[0][2]

如果b++然後輸出(* b)[2]相當於輸出了n[1][2]

c的玩法:

太簡單了,不想說了。就是存放多個指標的陣列,自己想想。

17樓:匿名使用者

摟主先要明確每個詞的後面乙個名詞代表其所要定義的型別陣列指標就是指向乙個陣列首位址的指標(aa);

舉例:char a="hello world";

char *aa;

aa=a;

指標陣列就是乙個陣列,這個陣列的元素是指標;

舉例:char a='t';

char *aa[2];

a[0]=a;

a[1]=a;

附:感覺樓上的這段舉例有點問題

int a[10];

int* s;

s = &a;

C語言中指標陣列的問題,c語言關於指標陣列的問題?

這樣看 0x00 0x78,0x99 0x78 h e l l 0 0 0x99 w o r l d 0 其中s就是0x00,然後,s 0 就是 0x00 0 0x00 取內容,得到的值是0x78,然後列印的就是hello s,就是相當於s 0 s 1,因為優先順序關係,先執行s 0 就是 0x78...

c語言關於指標的基礎問題,C語言關於指標的基礎知識

左邊傳遞的是數值,所以,形參不會對實參產生任何影響!右邊傳遞的是指標,而且,在swap 函式中,對指標中的資料進行了交換 變更 導致實參所對應的變數中的資料發生了變化。形象來說,傳指標到子函式,相當於把房間位址傳到子函式中,子函式根據房間位址,對房間中的物品進行處理。實際就是處理的實參對應的房間。關...

關於指標問題,C語言指標問題

對應sql server資料庫中的游標定義如下。forward only 指定游標只能從第一行滾動到最後一行。操作速度最快,效能最好。只能讀取資料。keyset 指定當游標開啟時,游標中行的成員資格和順序已經固定。對行進行唯一標識的鍵集內建在 臨時資料庫 內乙個稱為 keyset 的表中。對基表中的...

C語言中陣列和指標的問題

呵呵,你這個問題提重複了。我的回答也給你重複貼一遍。a a a 0 都是乙個值,指向首位址。p1是取指標p1的位址,不是p1內容的位址。p1 p2相等,但是 p1 不等於p2。p3 與 陣列a沒關係,但是因為a 4 正好索引到陣列a最後乙個成員的下乙個位址,因此正好是p1的位址。這段解釋比較麻煩,畫...

關於C語言指標的問題,關於C語言指標的乙個問題!

a b 的意思是把b的值賦給a 不要因為 是賦值符號,就理解為把a賦值給b,其實 就是等號 結構體指標訪問成員時使用 結構體訪問成員時使用 struct stu a,b b a a.id 10 b id 12 本人對第五行的max min array 不理解,為什麼 array可以同時指向max和m...