c 指標陣列問題,C 中關於指標陣列的問題。

2022-03-09 08:55:34 字數 4520 閱讀 6571

1樓:

**是錯誤的。char *cchar[count];宣告瞭cchar是有count個元素的陣列,每個元素都是指向char型變數的指標。但cin>>(*(cchar+i));卻試圖給cchar的第二個元素(指標)賦一個鍵盤值——這裡指標還沒有確定指向,是隨機的,它隨機地指向了不能寫入的地方,就要出錯。

這裡應該先給指標陣列賦值——確定指標指向……

2樓:匿名使用者

初學c指標的困擾,相當然的以為*(c+1)是指定第陣列第2個元素。

我當年剛開始學的時候,也犯過這錯誤。

記住只有c[i]才是指向第i個字串,*(c+i),只是取了第一個字串的第i個字元。

另外,象paopaojingyu說的,記住字串指標在使用時要申請記憶體空間,使用完後要free 掉.

3樓:匿名使用者

char *cchar[count];

這是定義了一個指標陣列,但是指標沒有指向分配的記憶體,此時指標指向隨機的記憶體地址,執行必定崩潰

4樓:匿名使用者

我想問下這個程式你可以執行嗎?

我反正是會奔潰

你直接象沒有分配的記憶體中寫東西

怎麼能行

5樓:匿名使用者

這樣的程式,是不能編譯的吧,編譯會報錯的

c++中關於指標陣列的問題。

6樓:匿名使用者

*p即p[0],即陣列中下表為0的元素

7樓:聽不清啊

舉個例子:

int x=20,y=10,*a[2];

a[0]=&x,a[1]=&y;

就會輸出x=20 y=10

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

1)*a即a[0],在上例中也就是x的地址。

2)中括號內數字可以由編譯系統自動測定初始化了幾個元素,char *p=; 就相當於char *p[1]=;

char *q=; 就相當於char *q[2]=;

c++指標陣列題目

8樓:洛聽露

char *pnames;是一個指標陣列,即*pnames陣列。在vc中,一個指標佔用空間為4個位元組,由於初始化時為該指標陣列自動分配了3個字串,故pnames有三個元素,所以sizeof(pnames)為12。而pnames[0]僅為一個指標,所以佔用空間為4個位元組。

c++問題,陣列指標 50

9樓:

a是個陣列名,陣列名在c語言裡是個常量,是不能改變的,而a++要改變a的值,這個不行的

1、引用作為引數

10樓:匿名使用者

你的具體問題是什麼?

**看不懂?

11樓:

#include

using namespace std;

int change(int (*p)[3])return 0;

}int main()

;int (*p)[3];

p=&(matrix[0]);

change(p);

for(int i=0;i<3;i++)

cout<

}a=1; //正確

c++指標陣列怎麼用,還有指標陣列和陣列指標

12樓:匿名使用者

名字可能拗口一點。增加一個」的「就好理解了:」指標的陣列「和」陣列的指標「。

」指標的陣列「和」整型的陣列「類似,就是指一個陣列,其中每一個元素是指標型別。從陣列中取出一個元素(指標)後,再根據這個元素(指標)的指向地址,對實際的記憶體空間進行操作。

」陣列的指標「,就是指一個陣列的首元素的地址,陣列中儲存的元素不知道是什麼型別(整型、浮點型、指標型都有可能)。

13樓:匿名使用者

指標的陣列和整型的陣列是指一個陣列,其中每一個元素是指標型別;

陣列的指標是指一個陣列的首元素的地;

參考例項應用如下:

//注意指標陣列和陣列指標分別是如何指向二維陣列的;

#include

main()

;/* 定義二維陣列m並初始化*/

int (*p)[4];//陣列指標 p是指標,指向一維陣列,每個一維陣列有4個int元素

int i,j;

int *q[3];//指標陣列 q是陣列,陣列元素是指標,3個int指標

p=m; //p是指標,可以直接指向二維陣列printf("--陣列指標輸出元素--/n");

for(i=0;i<3;i++)/*輸出二維陣列中各個元素的數值*/printf("/n");

}printf("/n");

for(i=0;i<3;i++,p++)//p可看成是行指標printf("/n");

printf("--指標陣列輸出元素--/n");

for(i=0;i<3;i++)

q[i]=m[i];//q是陣列,元素q[i]是指標for(i=0;i<3;i++)

printf("/n");

}printf("/n");

q[0]=m[0];

for(i=0;i<3;i++)

printf("/n");

}printf("/n");}

14樓:大倉的春天

這個 你主要看後面兩個字,指標陣列是陣列,每一個元素是指標,而陣列指標,是指標,是指向陣列的指標

c++類型別指標陣列

15樓:匿名使用者

c++不支援動態陣列,陣列在編譯時就已經被分配了記憶體,因此不能夠使用變數作為陣列定義時的大小。

16樓:鳶梨的小布丁

把private改為public,先定義一個物件,再賦值:

a obja;

header_msg[0] = "ai";

header_msg[1] = "vi";

header_msg[2] = "oi";

17樓:戰略學院

pp *p[m]; 是錯的,陣列的長度必須為常數

18樓:做他

宣告陣列必須用常量.

int m=5;

int a[m];//錯誤,m是變數!

/////////////////

const int m=5;

int a[m]//正確

/////////////////

#define m 5

int a[m]//正確

19樓:**的可樂

上面有人已經說得很清楚了,我補充下。

c++中,如果採用靜態記憶體分配的方式宣告陣列(即,形如int a[5]的宣告方式),陣列大小隻能為常量。

這裡的常量可以是一個常數(1,2,等),前文define的整型值,也可以是一個const量。如:

#define xx 5

const int x2 = 6;

int a[x2]; // 正確

int b[xx]; // 正確

如果不能接受這種方式,你需要採用動態記憶體分配,以下是例子:

int* array;

int size = rand()%20+5; // size取值範圍5到24(含)

array = new int[size]; // 動態陣列,大小為size,不定值

……delete array; // 釋放空間

20樓:

pp *p[m]; 陣列分配大小時不能使用變數,必須用常量,因為編譯器在編譯時必須知道陣列大小,從而為陣列分配空間,而變數只有在執行時會有值。 這個是語法規定

關於c++中指標陣列賦值時的迷惑

21樓:鳶梨的小布丁

用陣列名賦值給指標時,意思就是讓這個指標指向陣列的第0個元素例如volatile word *pcount=m_wcount;

等價於volatile word *pcount=&(m_wcount[0]);

volatile word *pcount的真正含義是 ( volatile word *)pcount,即宣告一個volatile word *型的指標變數pcount,*號在這裡的作用不是按指標定址的*運算子,而是宣告指標變數的標誌。

22樓:匿名使用者

int *p[6] 是一個整型指標的陣列,該陣列儲存6個整型指標的地址,而不是整數本身。

char *p[6]是一個字元指標的陣列,該陣列儲存6個字元指標(字串)的首地址,所以這樣可以賦值的。

23樓:匿名使用者

&是取它的地址,*是取它地址裡的內容,我是這麼理解的

c符陣列和字元指標,C 字元陣列和字元指標

你這個問題問得很好,我們知道實際上一個字串在進行賦值的時候,例如 char p hello world 這樣賦值是允許的。那麼這並不代表 hello world 這個就是一個指標,實際上我們的這一動作,編譯器在幕後為我們做了很多事,首先在常量區分配一個字元陣列,然後將 hello world 這個字...

c語言中陣列指標和結構體指標問題

樓上都說的很不錯。針對補充,我說兩句 結構體名字不是指標,結構體陣列的名字才是指標 就好像int x x不是指標,int x 2 x是常量指標 同樣 struct aa aa x x不是指標,aa x 3 x是常量指標 對於陣列int a 2 我們通常把a看成是指標 但實際上,這個指標並不存在的,a...

請教c語言中指標陣列的問題如下

你好,你猜的沒錯,的確是指標問題,你想想哈,temp是一個char,你每一次都把 temp這地址賦值給c i 導致c i 用的記憶體空間始終是temp所在的記憶體空間。fgets temp,6,fp 這語句導致temp記憶體空間存放的是 zzzzz 而每一個c i 都指向temp所在記憶體空間,所以...