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樓:匿名使用者 &是取它的地址,*是取它地址裡的內容,我是這麼理解的 首先看p 它是一個指向int 型別指標的指標。再看b b在除了sizeof b 的其他所有表示式中均隱式的轉換成一個指向它儲存物件型別的指標。只在表示式中才這樣的轉化 在c c 中其實是沒有多維陣列的。多維陣列都是通過一維陣列實現的。其實陣列本身也是一種物件。int b 2 2 實際上可以理解成in... 這個問題關鍵在於理解指標為什麼要有型別。其實不同型別的指標本質上都是一樣的,即記憶體地址,地址本身是沒有型別的,賦予指標型別的意義在於給出儲存資料的位元組寬度,也稱資料對齊寬度。比如 int pt,pt是一個整數指標,那麼編譯器便知道如果通過pt讀取資料時需要一次讀取4位元組,因為那裡存放著一個in... 名字可能拗口一點。增加一個 的 就好理解了 指標的陣列 和 陣列的指標 指標的陣列 和 整型的陣列 類似,就是指一個陣列,其中每一個元素是指標型別。從陣列中取出一個元素 指標 後,再根據這個元素 指標 的指向地址,對實際的記憶體空間進行操作。陣列的指標 就是指一個陣列的首元素的地址,陣列中儲存的元素...C 陣列與指標,C 陣列與指標
c語言指標與陣列問題,c語言陣列與指標相關問題,謝謝
c指標陣列怎麼用,還有指標陣列和陣列指標