c語言全局指針,C語言全局指針定義

本文目錄一覽:

c語言定義了兩個全局的指針變數,為什麼這兩個指針變數指向同一地址

C裡面好像全局變數 會被自動付值為0

而函數內部的臨時變數則不會被付值,而是隨機的數值

c語言指針

第一個題:(考的是 指針)

void int sp(int *a){

    int b = 2;

    a = b;    // a 指向 b

    *a = *a * 2;    // 即將 b 的值 乘以 2, b 變為 4

    printf(“%d,”, *a);    // 輸出 a 指向的變數的值,即 b 的值 4

}    // 所以 sp() 函數其實就是輸出 4

printf(“%d,%d\n”, k, *p);    // 首先輸出 k 的值 3,然後輸出 指針p 指向的變數k的值3

// 注意,指針p 雖然作為參數傳入 sp()函數,但只是將其值賦給函數的形參 指針a

// 指針a 此時雖然也指向了 變數k, 但其隨後又指向了 變數b,並修改的是 b 的值

// 因此,指針p 的指向並沒有改變,依然指向 變數k

輸出結果就是 4,3,3

第二個題:(考的是 指向指針 的 指針,即 指針的 指針)

(由於有指針的指針,建議畫圖來理解各變數和指針間的關係)

int i = 3, *p = i, **r = p;

// p 指向 整型變數i;r是指針的指針,r 指向 指針p

// 這裡把 f(r); 替換為 完整的函數定義,便於理解

void f(int **s) {  // r 和 s 現在擁有相同的值,即它們指向 同一個指針,由於 r 指向的是 指針p,所以 s 也指向 指針p  

int *t = k; // 指針t 指向 全局變數k 

*s = t;    // *s 即 p,因此這條語句等同於 p = t,也就是 指針p 的指向被更改了,它現在和 指針t 一樣,都指向 全局變數k 

printf(“%d, %d, %d, “, k, *t, **s);    // 輸出 k的值 7,*t 的值 7 (t 指向 k),**s 的值 7(**s == *(p) == 7,因為 s 指向 p,p 又指向 k) 

}

// 由於你的圖最後沒拍完整,我就當最後是 **r ,即使如果不是,只要你理解了也能自己分析

printf(“%d, %d, %d\n”, i, *p, **r);    // 輸出 i 的值 3,*p 的值 即 k的值 7,**r的值 即 k的值 7,**r 的分析和 **s 一樣

// 最後輸出應該是 7,7,7,3,7,7

這道題就是通過使用 指向指針的指針,從而修改 所指向指針 的指向,對於這道題來說就是指針p的指向。

C語言,全局指針變數可以被修改嗎?

可以.程序例子:

#include stdio.h

#include stdlib.h

int *p;

main()

{

int a,b;

p=a;

printf(“%p a=%p\n”,p,a);

p=b;

printf(“%p b=%p\n”,p,b);

return 0;

}

00

我的計算輸出:

0012FF7C a=0012FF7C

0012FF78 b=0012FF78

C語言指針的定義

指針就是地址。

你說的是指針變數。

整形變數,浮點變數,字元變數,指針變數。通過起名的規律就知道指針變數是儲存地址的。

指針變數和其他變數的用法一樣,作用域一樣。在一個子涵數中定義指針變數,是局部變數,其他函數是不能用的。

不要把指針變數想的太複雜,地址(指針)也是數據,和其他字元數據,整形數據一樣,沒什麼差異。

當然,全局變數的指針變數當然可以多函數使用。

指針的定義:地址。

指針變數的定義:存儲指針的變數。

C語言編程時使用全局變數和使用指針各有什麼特點?

全局變數在整個程序中都可以用,也可能生命全局指針。

指針指向一個特定的地址。

C語言指針問題

int * p;

main()

{

int x=1,y=2,z=3;

p=y;//這裡讓指針p指向y

fun(x+z,y); //傳參數為 int 型的 x+z == 4 , 和y的地址

printf( “(1) %d %d %d\n” , x , y , *p); //x = 1, y = 6, *p = 6 這裡是因為傳參數時傳的是地址而且p是全局的指針所以在子函數裡面會改變原來變數的值

}

fun(int x , int * y)

{int z=4;

*p=*y+z; //指針p是全局變數 *p = *y + z == 2 + 4 == 6, 這裡之後y的值被改變成6了,因為p—y

x=*p-z; // x = *p – z == 6 – 4 == 2

printf( “(2) %d %d %d\n” , x , *y , *p); // x == 2, *y == 6 , *p == 6

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/198712.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-04 10:26
下一篇 2024-12-04 10:26

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29
  • 指針Python:為什麼Python中不需要使用指針?

    在Python中,指針的使用不像其他語言一樣那麼常見。這是因為Python有自己的內存管理方式,所以在大多數情況下,不需要顯式地使用指針。那麼,為什麼Python中不需要使用指針呢…

    編程 2025-04-29
  • Python符號定義和使用方法

    本文將從多個方面介紹Python符號的定義和使用方法,涉及注釋、變數、運算符、條件語句和循環等多個方面。 一、注釋 1、單行注釋 # 這是一條單行注釋 2、多行注釋 “”” 這是一…

    編程 2025-04-29
  • Python中的隊列定義

    本篇文章旨在深入闡述Python中隊列的定義及其應用,包括隊列的定義、隊列的類型、隊列的操作以及隊列的應用。同時,我們也會為您提供Python代碼示例。 一、隊列的定義 隊列是一種…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • 如何使用HTML修改layui內部樣式影響全局

    如果您想要使用layui來構建一個美觀的網站或應用,您可能需要使用一些自定義CSS來修改layui內部組件的樣式。然而,修改layui組件的樣式可能會對整個頁面產生影響,甚至可能破…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29

發表回復

登錄後才能評論