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樓:匿名使用者 &是取它的地址,*是取它地址裡的內容,我是這麼理解的 你這個問題問得很好,我們知道實際上一個字串在進行賦值的時候,例如 char p hello world 這樣賦值是允許的。那麼這並不代表 hello world 這個就是一個指標,實際上我們的這一動作,編譯器在幕後為我們做了很多事,首先在常量區分配一個字元陣列,然後將 hello world 這個字... 樓上都說的很不錯。針對補充,我說兩句 結構體名字不是指標,結構體陣列的名字才是指標 就好像int x x不是指標,int x 2 x是常量指標 同樣 struct aa aa x x不是指標,aa x 3 x是常量指標 對於陣列int a 2 我們通常把a看成是指標 但實際上,這個指標並不存在的,a... 你好,你猜的沒錯,的確是指標問題,你想想哈,temp是一個char,你每一次都把 temp這地址賦值給c i 導致c i 用的記憶體空間始終是temp所在的記憶體空間。fgets temp,6,fp 這語句導致temp記憶體空間存放的是 zzzzz 而每一個c i 都指向temp所在記憶體空間,所以...c符陣列和字元指標,C 字元陣列和字元指標
c語言中陣列指標和結構體指標問題
請教c語言中指標陣列的問題如下