問我指標的概念,請簡單詳細地解釋一下,回答好就給10分。

發布 時尚 2024-04-02
21個回答
  1. 匿名使用者2024-01-27

    1、ptr_int, point_1.這裡的下劃線沒有任何特殊之處,只是兩個變數名稱,您可以不加下劃線。

    2. ptr int 是乙個指標,它的記憶體包含乙個整數記憶體的位址,即 0f0ah

    相反,它的意思是獲取位址,ptr int 獲取指標的位址。

    ptr int 是指標指向的記憶體內容,在本例中為 10

  2. 匿名使用者2024-01-26

    因為指標是乙個變數,所以指標本身需要空間來儲存。

    ptr int 的位址是 0f02

    ptr int 的值為 0f0a,從您的圖中,您沒有看到將值分配給 ptr int 的語句,這應該是乙個示例。

    ptr int 是訪問 0f0a,如果 0f0a 儲存為 int a; *ptr int 等價於 a。

  3. 匿名使用者2024-01-25

    1.這些下劃線沒有任何實際意義,並且允許使用字母和其他有效符號的任意組合來命名指標(只要它不是系統的保留字)。 但是,根據自己的程式設計寫作風格組合識別符號有利於程式的可讀性。

    2.這個有點令人困惑,因為你不明白它。 這意味著指標需要 4 個位元組來儲存,例如,當宣告時:

    int *ptr_int;

    float *point_1;

    在這兩個語句中,如果指標 ptr int 放置在記憶體中的位址 0f02h 處,則指標點 1 應放置在從 0f06h 開始的記憶體單元中。 這就是 &ptr int=0f02h 和 &point 1=0f06h 在 ** 中的含義。 後面的手寫 *ptr int=10 表示如果指標 ptr int 指向的內容是 10,那麼它應該從 0f0ah 開始儲存。

    其實這裡只是為了解釋指標和指標指向的資料是怎麼儲存的,這個**記錄是不完整的,如果真的要這樣寫,是無法編譯的。 由於指標 ptr int 尚未賦值,因此應先將其定義為變數 int a=10,然後再定義為 *ptr int=&a。

    你不必擔心,你只需要粗略地掌握資料是如何儲存在記憶體中的,當涉及到實際程式設計時,人們不需要關心......希望對您有所幫助!

  4. 匿名使用者2024-01-24

    scanf 語句要求在末尾提供整數資料儲存位址。

    a.&pa 錯誤,變數 pa 儲存乙個位址,位址本身不是整數資料,輸入資料作為位址資料儲存在變數 pa 中,這會導致 pa 指向的儲存區域指向系統記憶體的錯誤位址,這會給下一步 pa 的使用帶來麻煩;

    b.*PA是錯誤的,*PA是PA指向儲存區域(A)的值,這是乙個整數值,沒有給A賦值,使用儲存在A中的資料作為位址是有問題的,這個指標是乙個“百搭”指標;

    False,這與 B 的情況相同,A 的值為 *Pa

    沒錯,pa 是指向整數儲存的指標,它已被分配給變數 a,輸入的整數資料將儲存在變數 a 的儲存中。

  5. 匿名使用者2024-01-23

    int a,*pa=&a;這是宣告。 *宣告中的 PA 是指標。

    宣告型別 int 變數 a。

    宣告 int 指標 pa,並初始化 -- 使其指向變數 a 的位址。

    scanf(..Yes 語句。

    在語句中,*pa 是指標指向的值。

    在語句中,pa 是指標指向的位址。

    在語句中,a 是變數 a 的值。

    在語句中,&a 是變數 a 的儲存位址。

    &pa 在語句中什麼都沒有,它有語法錯誤。

    scanf("%d",..語句的第一部分(括號內)是輸入格式說明,%d 是十進位整數格式的輸入。

    在括號中,第二部分是輸入資料的位址、請求變數的位址或指標指向的位址。

    a,pa沒什麼,有語法錯誤。 所以這不是真的。

    b,在語句中,*pa 是指標指向的值,而不是指標指向的位址。 所以這不是真的。

    c,其中 a 是變數 a 的值。 它也不符合要求。 所以這不是真的。

    d、語句中,pa是指標指向的位址,滿足要求,正確答案是選擇它。

    上面特別強調了宣告和宣告。 這是因為看起來相似的東西在語句中的含義與在語句中的含義不同。 例如,在宣告 *pa=&a; - 將 a 的位址分配給 pa

    在語句中,write pa = &a -- 將 a 的位址分配給 pa

    在語句中,寫 *pa = a -- 將 a 的值賦值給 pa

    遇到 char *pa; 更煩人。

  6. 匿名使用者2024-01-22

    int a,*pa=&a;這句話可以分解為:

    int a;

    int *pa;

    pa=&a;

    scanf 函式獲取整數時,需要證書的位址,即 int * 型別,滿足 int * 型別的只有 &a 和 pa

    因此,選擇了 D

  7. 匿名使用者2024-01-21

    dscanf 要求提供變數的位址。

    那麼BC是不對的。

    如果要在 A 選項中輸入 a,則需要 A 的位址,但 &pa 是 Pa 的位址,所以不是真的。

  8. 匿名使用者2024-01-20

    p++ 和 *++p 的區別在於,前者間接地向 p 求助,然後自動遞增 p(即,p 指向當前指向該物件的物件之後的物件的位址),而 *++p 先自動遞增 p,然後間接地向 p 求助。 如圖所示

    p--vs. --p 與上述情況類似,不同之處在於它們指向當前指向的物件。 不過,值得注意的是:

    指標之間的減法是合法的,而指標之間的加法則不合法,例如:

    所以:<>

    以下是需要注意的幾點:

  9. 匿名使用者2024-01-19

    假設 k 是乙個指標。 如:int *k;

    k 的位址是 1044,這意味著 k=1044

    k 的內容是 1052 描述 *k = 1052

    k+1 = 1052+1 = 1053

    上述陳述含糊不清,沒有嚴格說明。 問題本身不夠嚴謹,答案也錯了,但你的理解也有問題。

    指標變數是用於儲存位址的變數,int *k ; k 是乙個指標變數,其值為位址 a,位址 a 包含資料 b。 而 k 本身會儲存在乙個位址中,可以用 &k 獲得。

    a對應1044以上,b對應1052,k以上是記憶體位址,如0xfff0ab12

    該操作後必須跟乙個指標變數(否則是錯誤的),它指示操作位址(引用、修改)中的資料。

    操作,後跟任何變數,該變數表示從中獲取變數的位址。 &k 是 K 變數的儲存位址。

  10. 匿名使用者2024-01-18

    要了解指標是位址。

  11. 匿名使用者2024-01-17

    對於 char*a; ,“”“的優先順序高於”*“,等價於*(a),即a是陣列,陣列元素是char*型別的指標。

    --a 優先順序是計算 a first,這意味著 a 必須先是乙個陣列,然後是 *,即陣列中的每個元素都是乙個指標,稱為指標陣列。

    對於 char*a; ,a 是 char* 型別的指標。

    --a) 表示 *a 必須首先是乙個指標,並且該指標指向的資料型別是乙個陣列,稱為陣列指標。

  12. 匿名使用者2024-01-16

    p 是指向 int 型別的指標。 *p 表示指標 p 指向的位址的值。

    從 p=a 可以看出,p 指向陣列 a 的第乙個位址。

    所以第乙個迴圈是給陣列的元素賦值a[0] a[9],迴圈完成後,p指向a[10],然後用p越界......

    在第二個迴圈中,你應該要列印 a 的 10 個元素的值,但你應該始終列印 *p 的值,即 a[10] 的值,因為它已經越界了,它是乙個不確定的值,程式可能會結束通話。

    第二個可以更改為如下所示:

    for(i=0,p=a;i<10;i++,p++) 或 for(i=0; i<10;i++)

  13. 匿名使用者2024-01-15

    printf() 函式的宣告原型如下所示。

    int printf(const char *format,[argument]);

    格式格式為 %d、%f,這意味著以下引數是相應的輸入型別。

    例如:printf("%d",n);%d 表示整數,即 n 必須是整數,即 int

    然後你的 printf("a[%d]=%d",i,*p);這意味著陣列 a[i]=*p 被列印出來,p 是指向陣列 a 的指標。

    其實這個迴圈有個問題,p已經越線了,p應該列印出來--,是:a[0]=9,a[1]=9,..

    printf("a[%d]=%d",i,*p--) 讓指標 p 一次返回乙個 int

  14. 匿名使用者2024-01-14

    首先,您需要明確:

    陣列的名稱實際上是乙個指標;

    p 指示指標 p 指向的值。

    然後第乙個迴圈是為陣列中的元素賦值。

    第二個迴圈逐個列印陣列中的元素。

  15. 匿名使用者2024-01-13

    列印“a[i]=*p”陣列。 *p 是指標的內容,其前面有乙個值。

    看看 printf 的列印格式。

  16. 匿名使用者2024-01-12

    請注意,在定義指標 p 後,您不會為其賦值 (p=&a),因此 p 的位址值是由系統任意分配的。 也就是說,他沒有指向 A。 *p=a;

    角色的知識將 a 的值支付給 p 指向的空間值 1。 所以後來 a 更改了並且沒有更改 *p 的值。

    第乙個問題已經回答過了,那就是系統隨意分配。 但這樣做是危險的,因為你不知道 p 指向哪裡。 如果指向對系統很重要的資料,則後續分配可能會使系統崩潰。

    因此,我們希望盡量避免這種程式。 否則可能會導致您的計算機出現故障。 使用函式 calloc 或 malloc 是安全的。

  17. 匿名使用者2024-01-11

    問題一和問題二可以歸結為乙個問題,對吧? 您確定輸出結構是 2 1 2 嗎? 而不是應該在 *p = a 中; 此語句的程式是否用完了?

  18. 匿名使用者2024-01-10

    int a, *p;定義乙個整數變數,其指標指向整數 a = 1; 為整數變數分配初始值 1

    p = a;將 1 分配給指標 p 指向的位址 [此行 ** 有致命錯誤!! 如果不初始化 p 指向的位址,很容易出現訪問非法記憶體區域的錯誤

    用於將初始值分配給整數指標的方法。

    方法一:int*p;

    p = (int*)malloc(sizeof(int));

    方法二:int *p, a;

    p = &a;

  19. 匿名使用者2024-01-09

    因為 [ ] 運算子的優先順序高於 *,所以我們根據優先順序對它進行排序:

    第乙個 p 與陣列中具有 2 個元素的陣列組合,然後與 * 組合,表示陣列中元素的型別是指標加 int P 是 2 個元素的陣列,陣列中的元素是指向型別型別的指標。

    第二個 p 先和 * 組合(因為有乙個 () 改變優先順序),表示 p 是乙個指標,然後和 [2] 組合表示它指向乙個有兩個元素的陣列,然後和 int 組合,表示陣列中的元素是整數。

    所以 p 是乙個指向兩個元素的陣列,並且該元素的型別為整數。

  20. 匿名使用者2024-01-08

    第乙個正確,第二個不正確,應該是指標陣列,這是指向整數的兩個指標。 可以參考《指標的藝術》,我覺得這本書很不錯。

  21. 匿名使用者2024-01-07

    樓上錯了!!

    int *p[2];它是乙個指標陣列,陣列包含指標(陣列包含兩個指標元素)。

    int(*p)[2];是乙個陣列指標,乙個陣列指標乙個陣列指標是指向陣列第乙個元素位址的指標,它本質上是乙個指標;

    指標陣列是陣列的元素是指標的陣列,其本質是陣列。

相關回答
18個回答2024-04-02

你好! 對於您的疑問,我將分開:

一是產品包裝(箱)上標明的位址與商標註冊證上的位址不一致是否違法。 商標法中沒有這樣的禁止,只要舊卷足以讓消費者識別出你的產品與其他商品的生產者不同。 但這種用法有乙個基本前提: >>>More

23個回答2024-04-02

好吧,你在問什麼問題? 我看不出你的問題,只要能幫到你,大家都會願意幫忙。

11個回答2024-04-02

1.染髮膏的品質久了會褪色,好的染髮膏的顏色不會太明顯; 至於不好的染髮膏,你不需要等太久,乙個月左右,就會變成發黃似的髮色; >>>More

6個回答2024-04-02

新手學習烹飪的步驟。

1.第一次用手做飯,不要緊張,其實很簡單,記住在煮熟的菜的基礎上加入相應調味料的要點,注意不要煮糊狀。 >>>More

6個回答2024-04-02

你好! 我覺得榮耀V8還是很不錯的,雙鏡頭設計讓榮耀V8快速拍出不一樣的好**。 雙鏡頭、雙感測器和雙ISP(影象處理晶元)可以使進入的光量和敏感區域增加一倍。 >>>More