-
房東,你可以用指標來解決,也就是讓指標開始指向陣列的第乙個位址,然後p++,直到遇到0。
示例:int a[20]=
int *p=a *p 指向陣列 a 的第乙個位址 * while(*p) *這必須有乙個值,這是真的,p 一直向後指向 * +p; -p;請注意,p 將在末尾向下移動一位,指向 0,而前一位數字將指向最後乙個值*
不知道房東滿意不滿意? 注意:使用指標非常有效。
-
使用 k = sizeof( a ) sizeof( int ) (或 long 型別),首先測量陣列中的元素數,然後 p = a + k -1 指向最後乙個元素。
-
我希望這個問題更具體。 在許多情況下,無法保證您能夠找到陣列的末尾。
但是對於字串。
指標,只需確保字串末尾有'/0'終結者,很容易找到:
假設。 char ch="abcdefg";
char *p=ch;
您只需要以下資訊: if ( p != '0')
while( *p) != '0'){}
-
不幸的是,除非事先使用特殊數字來標記結尾,或者記錄陣列的長度,否則這是不可能的。
-
int a[10];
int *p;
while(a[i]!='\0')
p=a[i];
i++;或 p=a 的指標; p+=(陣列長度 -1); 兩個語句。
-
沒有辦法做到這一點。
許多LS都錯了。 strlen(a),這是字串的長度。
-
還行。 指標可以指向任何地方,但指向後是否可以寫入是另一回事。 例如:
p=&a[9]
可以用 *p=10 寫入記憶體,但是。
p=&a[9]+1
它並不總是有效。
p=10 寫入位址的記憶體。
-
在 C 中,當陣列名稱分配給指標時,指標指向陣列的第乙個元素,這意味著指標變數儲存陣列第乙個元素的位址。 所以。
執行語句 int
a[5]=,p=a;之後,p 指向 a[0],上面 for 迴圈中的 p 和 p++ 表示將指標 p 指向 a 的下乙個元素,因此結果自然是 a[0]、a[1]、a[2]、a[3] 和 a[4] 的值,即 13579。
-
新增與陣列中的項一樣多的條目。
如。 int b[5];
int *p;
p=b;p+=5;
此時,p 指向 b[5] 未完成的尾部。
-
錯了,應該是 p+4
c,陣列標記為從 0 開始。
-
C 是一種高階語言,定義陣列的指令被轉換為分配記憶體的指令,是否初始化此記憶體取決於編譯器的實現。
你在這個實驗中做得很好,你可以看到編譯器是如何做到的。
-
1. 例如,顯式傳遞陣列長度。
void sot(int a, int n)2,隱式傳遞陣列的長度。
1) 將元資料儲存在陣列前面。
例如,如果要儲存長度為 n=255 的字串,則可以使用長度為 n+1 的陣列。 陣列的第乙個元素儲存字串的長度,後跟字串的內容。
2)使用特殊元素在陣列末尾標記陣列的末尾。
最典型的例子是使用 nul('\0'以 characters 結尾的字元陣列表示字串。 使用 null 指標標記指標陣列的末尾也很常見。
在 C 語言中,如果函式引數只有乙個陣列指標,則無法確定陣列的長度。
C 如何獲取陣列的長度?
總長度由單個的長度填充,即陣列數。
int len = sizeof(unstartstring)/sizeof(unsigned int);
-
pipoint 的內容是它當前指向的陣列元素的位址,偏移量可以通過與第乙個位址的差值來確定。
-
#include
#include
void main()
int arr[100]=;
int* pipoint=arr;
srand(time(0));
int a = rand();
while (a)
pipoint++;
a--;If (pipoint - arr > buried 100) 使用 pipoint - arr 檢視偏移量。
printf("出界");
elseprintf("沒有拆除丹越過了陸地邊界的彎曲");
-
程式寫錯了,指標指向了錯誤的位置,所以改成這樣:
void main()
for(int i=0;isystem("pause");
return;}
-
這個問題既簡單又複雜; 首先,你需要了解陣列宣告後面的記憶體分配,str0[3][20],它分配了乙個連續60個位元組的空間,str0[0]指向起點,str0[1]指向第21個字元,即str0+20;等等;
當你輸入它時,你會從頭開始繼續把它放在這個儲存空間中,即str0+0、str0+1、str0+2;
輸出以 str0+0 開頭,字串以 0 結尾(表示為'\0'後來,我知道這是之後唯一的事情'\0',所以先輸出 abc; 然後從 str0+1 開始輸出,結果是 BC; 然後輸出是 C。
現在,P++ 指向下乙個字元(移動乙個位元組)而不是字串。
當你根據你想要的內容輸入時,儲存位址應該是str0[0],str0[1],str0[2]; 輸出也是如此。
-
首先,你要明白陣列名稱和指標本質上是一回事,它們都是位址,陣列的第乙個位址。 一旦你知道了這一點,你就可以學習並付諸實踐。 這就是C語言的精髓。
例如,定義 int *p,a[10]; 並設 p=a; 這個操作稱為指向陣列 a 的指標 p,其本質是給變數 p 支付乙個值,即陣列 a 的位址、a[0] 的位址以及儲存在 a 本身中的內容。
所以引用 a[i],你可以用多種方式寫它,比如 *(a+i), p+i), p[i],所有這些都是等價的。
p++ 的意思不是 p=p+1,至少有時候不是,p++ 的運算其實是指向 p 指向下乙個元素,即 p 指向 a[0],所以現在 p 指向 a[1]。 由於 a 是乙個 int 型別並且代表 4 個位元組,因此操作 p++ 實際上將 p 的內容加 4。 不要問為什麼,這是C規定的。
如果 p 指向 char 型別,則 p++ 將 p 的值增加 1。
-
如果要表達a[i],最常用的a[i]也可以是*(a+i),或者*(p+i)c語言規定:表示式1[表示式2]完全等價於*(表示式1)+(表示式2)),也可以說a[b]和b[a]也是完全等價的,也就是說a[i]和i[a]也是完全等價的, 你可以試試。
-
*p *a p=a 表示陣列的第乙個位址分配給指標 P,以便指標指向陣列,p++ 表示指標 p 位址加 1,使其指向下乙個位址。
-
a[i] 可以表示為: *(a+i) a[i] 我只記得這兩個。
p=a 表示陣列中第乙個帶有 p 的位址,指標指向該位址。
p++ 表示 p 指標指向其下乙個元素 例如,如果 p 指向 a[i],則 p++ 指向 a[i+1]。
二維陣列實際上是陣列的陣列,因此指向二維陣列的指標是指向陣列的指標。 考慮到這一點,選擇返回型別很簡單。 >>>More
如果檔案比較大,則將檔案的最後一部分(例如1000個字)放入陣列中,然後進行比較。 發現''(ASC程式碼13回車)可以註明位置。