C: (pointer) 陣列變數和指標的區別
1. sizeof(陣列)=陣列的長度; sizeof(指向陣列的指標)=指標大小4或8
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <stdio.h> int
main( int argc,
const
char * argv[]) { char
s[] = "hello world!" ; char
*t = s; printf ( "sizeof(s) is %li \n" ,
sizeof (s)); printf ( "sizeof(t) is %li \n" ,
sizeof (t)); return
0; } |
output:
sizeof(s) is 13
sizeof(t) is 8
2. char s[]中的&s等價於s, 同是取char s[]的地址;
而char *t = s中的&t 不等同於 t, 取得是t指標變數本身的地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include <stdio.h> int
main( int argc,
const
char * argv[]) { char
s[] = "hello world!" ; char
*t = s; // &s == s; What is the address of the s array? printf ( "&s is %p \n" , &s); // &t != t; What is the address of the t variable? printf ( "&t is %p \n" , &t); return
0; } |
output:
&s is 0x7fff5fbffa2b
&t is 0x7fff5fbffa20
3. 宣告指標, 記憶體會分配空間, 所以指標可以重新賦值; 而陣列變數和陣列元素公用地址, 所以如果重新賦值, 則產生編譯錯誤.
1
2
3
4
5
6
7
8
9
10
11
12
|
#include <stdio.h> int
main( int argc,
const
char * argv[]) { char
s[] = "hello world!" ; char
*t = s; s = t;
// Error: Array type is not assignable return
0; } |
相關文章
- Golang 學習——陣列指標和指標陣列的區別Golang陣列指標
- C陣列和指標陣列指標
- C語言指標(三):陣列指標和字串指標C語言指標陣列字串
- 指標陣列和陣列指標與二維陣列指標陣列
- 陣列指標,指標陣列陣列指標
- C指標和陣列的關係詳解指標陣列
- 【C++系列】指標物件和物件指標的區別C++指標物件
- Go 陣列指標(指向陣列的指標)Go陣列指標
- 【C】 28_指標和陣列分析(上)指標陣列
- 【C進階】28、指標和陣列分析指標陣列
- 指標陣列與陣列指標指標陣列
- C/C++引用和指標的聯絡和區別C++指標
- C語言指標和陣列筆試題C語言指標陣列筆試
- 陣列地址與指標之間的區別與聯絡陣列指標
- C語言 指標與陣列C語言指標陣列
- 指標常量和常量指標的區別指標
- sizeof和strlen計算陣列型別和指標型別字串陣列型別指標字串
- 陣列指標陣列指標
- 指標和引用的區別指標
- c語言-運算子,陣列,指標C語言陣列指標
- c程式設計--指標與陣列C程式程式設計指標陣列
- 字串指標與字元陣列的區別--字串常量的值不能改字串指標字元陣列
- C語言指標(二) 指標變數 ----by xhxhC語言指標變數
- C#陣列與集合的區別C#陣列
- const 變數和指標變數指標
- systemtap 探祕(三)- 型別、變數和陣列型別變數陣列
- golang切片和陣列的區別Golang陣列
- 智慧指標和普通指標的區別指標
- (C語言)使用指標列印陣列的內容C語言指標陣列
- C語言中Pointer, Array,String and Structures的區別C語言Struct
- C----陣列越界問題、指標入門陣列指標
- 【淺出 PHP】陣列相加和陣列合並的區別PHP陣列
- 日常學習儲存--陣列和指標陣列指標
- 劍指offer——把陣列排成最小的數C++陣列C++
- C語言中陣列首地址和陣列第一個元素的地址有什麼區別C語言陣列
- 【原創】淺談指標(十三)指向陣列的指標指標陣列
- go 方法接受者 是指標型別和非指標型別的 區別Go指標型別
- 指標變數指標變數
- 二維陣列的指標的理解陣列指標