關於 C 的結構指標變數的小問題

發布 科技 2024-05-19
17個回答
  1. 匿名使用者2024-02-11

    出現此問題的原因是鍊表的建立功能有問題,問題所在圖中的紅框中。

    這裡每個節點都使用乙個區域性變數,函式結束後,雖然本地堆疊的內容不會被清除,但記憶體會**,如果堆疊也被其他地方使用可能會分配給它,記憶體內容就會發生變化。 執行此操作的正確方法是請求堆記憶體。 使用 malloc 函式並包含標頭檔案 include。

    將框中的**替換為:

    struct student *b = struct student*)malloc(sizeof(struct student));

    b->next = null;

    b->num = 2;

    struct student *a = struct student*)malloc(sizeof(struct student));

    a->next = b;

    a->num = 1;

    struct student *head=a;

  2. 匿名使用者2024-02-10

    C 語言中的指標和陣列很有趣。

    例如,如果定義乙個陣列 a[10],則可以通過 a[1] 訪問其中的元素,也可以使用 *(a 1) 訪問它。

    為什麼這樣使用?

    ptr 的型別是 (int *),因此 ptr 儲存在記憶體中的是 int 型別的指標,指向 int 位址。 在正常情況下,您可以通過 PTR 訪問它指向的某個位址中的資料,如下圖 22 所示。

    這裡的程式裡有乙個malloc函式,它的作用是申請空間,本來只有乙個空間,申請後可以有很多連續的空間。 這時,如果 ptr 0000001 加 1 中的值指向 22 以下的空間,就可以繼續儲存東西了,如圖所示。

    這就是指標的用武之地,它直接控制位址空間。 ptr[i] 與 *(ptr i) 的含義相同。

    所以當 scanf 時,你可以直接把一些東西放到 ptr[i] 的位址。

    同樣,char *p 也可以變成乙個陣列,只要你給它空間。 這在資料結構和演算法中用得很多,也很有趣,但很容易讓人頭暈目眩。

  3. 匿名使用者2024-02-09

    指標變數的定義。

    指標變數有三個屬性:

    1) 指標變數指向的變數型別。例如,i 指標指向的變數 i 是乙個整數。

    2)指標變數在記憶體中占用多少個記憶體單元。例如,如果 i 指標占用兩個記憶體單元,則稱為“近指標”,用 near 表示。 如果變數在記憶體中占用 4 個記憶體單元,則稱為“遠指標”,用遠表示。

    如果未指定 NEAR 或 FAR,則預設值為 NEAR。 (指標變數在記憶體中占用 2 或 4 個記憶體單元)。

    3)指標變數指向哪個變數,即指標變數的值是多少。例如,i 指標的值為 2000。

    指標變數定義的一般形式:

    型別識別符號 * 識別符號。

    “表示定義了指標變數。

    “識別符號”是指標變數的名稱。

    Type Identifier 指示指標變數指向的變數型別。

    例如,int i, j; 定義兩個整數變數

    int *pointer_1, *pointer_2;

    float *pointer_3;

    char *pointer_4;

    void *pointer_5;

    char far *pointer_6;

    指標變數的賦值:示例、

    pointer_1 = &i;

    pointer_2 = &j;

    pointer_1 = 100;

    您還可以在定義指標變數的同時指定指標變數的初始值,例如

    int a;

    int *p = &a;

  4. 匿名使用者2024-02-08

    int a;

    a=20;int *pa=&a;

    printf("%d",*pa);

    這種做法是錯誤的! 原因是 C 中的變數是先用的,後用,C 中的變數是在語句的開頭定義的,但在 C++ 中,它們可以隨用隨到地定義。

    **mr computer

  5. 匿名使用者2024-02-07

    不,我用 VS2005 嘗試過,兩種方法都有效,沒有錯。

  6. 匿名使用者2024-02-06

    我沒有發現任何錯誤,我可以發布你們所有的程式碼嗎?

  7. 匿名使用者2024-02-05

    1.概念不同。

    “指標”是乙個概念,“指標變數”是乙個具體的實現,指標也是乙個變數,所以需要定義,指標的定義和一般變數是一樣的。

    2.儲存位址不同。

    變數的(記憶體)位址稱為指向該變數的“指標”,指標可以找到帶有其位址的記憶體單元。 指標變數用於儲存另乙個變數(即指標)的位址。

    指標和指標變數之間的關係。

    1.指標是位址,位址是指標。

    2.位址是儲存單元的編號。

    3. 指標變數是儲存記憶體位址的變數。

    4. 指標和指標變數是兩個不同的概念,但需要注意的是,通常我們在描述指標變數時會把指標稱為指標,但實際上它們有不同的含義。

    指標的優點:

    1.直接訪問硬體。

    2.快速傳輸資料(指標指示位址)。

    3. 返回多個值並返回乙個值(指向陣列或結構的指標) 4.表示複雜的資料結構(結構體)。

    5.方便處理字串。

    6. 指標有助於理解物件導向。

  8. 匿名使用者2024-02-04

    更嚴格的說法是:

    系統為每個儲存單元分配乙個位址值,C++ 稱之為“指標”。 如果有 int i=5; ,儲存變數 i 的儲存單元的編號(位址)& i 稱為指標。

    “指標變數”是儲存上面提到的“位址值”的變數,也可以表示為儲存變數占用的記憶體空間的“第乙個位址”的變數(因為乙個變數通常在一行中占用多個位元組的空間)。 例如,int i=5; 有一句話int *p=&i;,則 i 的指標 &i 被分配給 int * 指標變數 p,這意味著 &i 儲存在 p 中。 因此,指標變數是儲存指標的變數。

    值得注意的是,有許多資料和教科書沒有做出上述區分,而是認為“指標是指標變數的縮寫”,例如 int *p=&i;解釋是:宣告乙個int *指標p,用變數i的位址初始化; 嚴格來說,你應該宣告乙個 int * 指標變數 p。 因此,有時有必要根據上下文來理解本書的精髓,在文字表達上不要過於死板。

  9. 匿名使用者2024-02-03

    C++ 中的指標是指向資料儲存位址的位址,例如 int

    a;intp=&a,表示變數 a 的位址; 指標變數是將資料儲存在乙個變數中的位址,首先在變數中找到位址,然後從這個位址找到資料,所以基本是一樣的。

  10. 匿名使用者2024-02-02

    空指標的定義略有不同。

    在 C 中:定義

    nullvoid*)0

    在 C++ 中:定義

    null0 和數字 0 是唯一可以直接分配給指標的值。

    此外,類成員、指標等型別在 C++ 中不可用。

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

    指標是位址,指標變數是儲存位址的變數。

    指標的基本概念。

    在計算機中,所有資料都儲存在記憶體中。

    通常,記憶體中的乙個位元組稱為記憶體單元,不同資料型別占用的記憶體單元數各不相同,例如整數為 2 個單位,字元為 1 個單位。 為了正確訪問這些儲存單元,必須對每個儲存單元進行編號。

    記憶單元可以通過其編號準確定位。 儲存單元的編號也稱為位址。

    由於您可以通過其編號或位址找到所需的儲存單元,因此通常將此位址稱為指標。

    對於儲存單元,單元的位址是指標,儲存在其中的資料是單元的內容。 在 C 語言中,允許將指標儲存在變數中,這稱為指標變數。 因此,指標變數的值是記憶單元的位址,或稱為記憶單元的指標。

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

    變數的(記憶體)位址稱為指向該變數的“指標”,指標可以找到帶有其位址的記憶體單元。 指標變數用於儲存另乙個變數(即指標)的位址。

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

    實際上,它與“整數”和“整數變數”的區別相同。

    簡單來說,“指標”是乙個位址,“指標變數”是乙個位址的值。

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

    指標的概念是C C++的重要元素之一,它是一種儲存指定型別資料位址的變數,而相同型別的變數儲存資料。

    顧名思義,指標變數是乙個變數,其值是可變的,與整數變數、浮點變數等的命名約定完全相同。

    “指標”是概念,“指標變數”是具體實現。

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

    首先要了解什麼是指標,指標是一段記憶體的位址,指標變數是用來儲存這個位址的,也就是說,指標變數儲存在指標中,就像整數變數儲存在整數中一樣。

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

    指標變數是儲存位址的變數,通常在定義整數和實心等變數後,系統會給變數分配一定的記憶體來儲存資料,通過定義指標變數分配給它的空間用於儲存位址。 並且只能儲存位址。

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

    指標是 C 語言的精髓,通過使用指標,我們可以充分利用記憶體資源並使其盡可能高效。 借助指標技術,我們可以描述複雜的資料結構,字串的處理可以更加靈活,陣列的處理可以更加方便,程式的編寫簡潔、高效、令人耳目一新。 但是因為手指是給初學者的,所以很難理解和掌握。

    掌握需要一定的計算機硬體知識作為基礎,這需要更多的練習和更多的動手工作,才能在實踐中盡快掌握,成為C語言的高手。

    過去,當我們在程式設計中定義或描述變數時,編譯系統會給定義的變數分配相應的記憶體單元,即每個變數在記憶體中有乙個固定的位置和乙個特定的位址。 由於變數的資料型別不同,它所占用的記憶體單元數也不同。 如果我們在程式中定義它:

    int a=1,b=2;

    float x=, y = 4 . 5 ;

    double m=;

    char ch1='a', ch2='b';

    讓我們看一下構建系統如何為變數分配記憶體。 變數 a 和 b 是整數變數,每個變數在記憶體中佔 2 個位元組; x 和 y 是實數型別,每個佔 4 個位元組; m 為雙精度實數型別,占用 8 個位元組; ch1 和 ch2 是基於字元的,每個佔乙個位元組。 由於計算機記憶體是按位元組定址的,變數的儲存從2000個記憶體單元開始,因此編譯系統在記憶體中變數的位置如圖6-1所示。

    例如,變數A在記憶體中的位址為2000,占用兩個位元組後,變數B的記憶體位址為2002,變數M的記憶體位址為2012。 訪問記憶體中變數,用於 scanf("%d%d%f", &a, &b, &x) 表示由將輸入資料的變數的位址指示的記憶體單元。然後,要訪問乙個變數,你應該首先在記憶體中找到它的位址,或者換句話說,乙個唯一指向記憶體變數的位址,我們稱之為位址。

    指向變數的指標。 如果變數的位址儲存在記憶體的特定區域中,並且位址儲存在變數中,則此類變數是指標變數,通過指向對它所指向的變數的訪問,對變數進行一種“間接訪問”。

    一組指標變數 pa、pb、px、py、pm、pch1 和 pch2 分別指向上述變數 a、b、x、y、m、ch1 和 ch2,指標變數也儲存在記憶體中,如圖 6-2 所示

    在圖 6-2 中,左側所示的記憶體儲存了指標變數的值,該值給出了引用變數的位址,通過該位址可以訪問右側描述的變數。 例如,如果指標變數 pa 的值為 2000,則它是變數 a 在記憶體中的位址。 因此,pa 指向變數 a。

    變數的位址是指標,儲存指標的變數是指標變數。

相關回答
9個回答2024-05-19

範圍。 你靜態字元 *chh;

static char *ch1;雖然兩個指標指向的位址沒有變化,但你有沒有想過它們指向的記憶體位址是否已經釋放,char chc[10]; 它是本地的,函式已經結束,生命週期已經結束,你正在嘗試使用 void times() 中的指標訪問它。 >>>More

6個回答2024-05-19

兩者的 p 都是指標。

p=&t,將 p 指向的內容更改為 t 的位址,p=&t 是將指標更改為 t 的位址。 >>>More

4個回答2024-05-19

我見過這樣的問題,我不明白你的意思,但我認為是這樣的,結構; 我打了...... 您可以在其中新增所有資料形式的定義,例如 int >>>More

6個回答2024-05-19

好像你對結構體和結構體指標不太了解,資料陣列是你定義的乙個結構體陣列,它由兩個結體元素組成,每個結構體元素包含兩個成員 x 和 y,第乙個元素是 1 和 10,第二個元素是 2 和 20,你定義的結構指標 p 開始指向陣列資料的第乙個元素, P 指向資料陣列的第二個元素,指標 P 可以操作兩個成員 x 和 y >>>More

19個回答2024-05-19

2006年底應計壞賬準備:1,200,000 * 3% = 36,000

2006年10月,已確認為無法收回的應收賬款12,500元作為“壞賬”處理,會計分錄記入:壞賬準備12,500元 >>>More