c語言中,當指標指向變數後,指標的值改變了,變數的會變嗎?如果變數的改了,指標的也會改嗎

2021-04-19 08:30:24 字數 1152 閱讀 8455

1樓:端武者

指標的值改了復 ==> 你是說指標裡面

制儲存的地址改了還是指標指向的資料的值改了.前者會讓指標指向另一個地址,後者會改變對應記憶體地址的值.

變數的改了 ==> 指標本來就是指向一個記憶體地址的.你指的"指標的也會改"是說指標指向的值也會改, 確實是這樣.

對指標進行解引用之後的操作相當於對變數本身進行操作,獲取值時亦然.

在c語言中什麼情況下變數的值會發生改變

2樓:無聲的硝煙

既然是變數,就都可能會變。你讓它作加減乘除,當然就會變了。

你是想問變數的域嗎?

函式體(包括main函式)中定義的變數的有效期一般只在函式中有效,也會在函式每次被呼叫時臨時分配空間作為變數。函式結束後,變數對應的空間會被釋放(雖然有些編譯器不管這些,仍然能夠通過指標訪問到原資料,但是這是不安全的)。而static型別的變數只在函式第一次被呼叫時初始化,之後的呼叫將不再會初始化該變數

關於實參與形參:

c語言傳遞引數時,基本型別變數傳遞的僅僅是值,對應主函式體中的記憶體是不會被呼叫的函式直接訪問的。(指標那裡的swap那個例子很說明問題)。比如主函式裡面定義了一個a,呼叫的函式引數裡面有個a,然後主函式「把a傳進」呼叫的函式中——這種理解是錯誤的,應該是將a的值傳遞到呼叫函式私有的一個變數a中(也就是有兩個a)。

還有不懂的再問吧

3樓:匿名使用者

通過變數名給變數賦值,如: int a;  a=5;

通過指向該變數的指標,給指標所指向的資料進行賦值。

如:int a, *pa=&a;  *pa=5;

和2本質上是一樣的,那就是通過指標,對該變數所佔用的儲存單元賦值。

如: int  b[3],  a, *pb=b+3;  *pb=5;  // 這裡似乎pb並沒有指向a,但b+3實際上已經是a的地址了。緩衝區溢位也就是這種情況。

c語言中定義一個變數a,其地址還會不會變了?像a=b,意思是值變了,地址沒變?那怎麼變化a的地址

4樓:匿名使用者

不會,a=b的意思是把b賦值給a,舉個例子就是a=1的意思就是把1這個值賦予給a,1的值既不會變化也不會改變地址。想要變化a的地址應該用指標變數吧,a=&b這種。

指標和指標變數有什麼區別呢C語言中指標和指標變數的區別是什麼??

用例子來看一下。int a 3 int p p a 現在來看一下。a 3這個式子先解釋一下 等式右邊是常量,左邊是變數。同理的p a,左邊的是指標變數,右邊的是指標 指標的基本概念 為了區別記憶體的不同位置,記憶體被分成位元組,記憶體的全部位元組順序地賦予一個稱為地址的編號。程式中的變數將在記憶體中...

C語言中可以給指標變數賦值常數嗎

1 申請了空間 在常量區 存放了字串 2 在字串尾加上了 0 3 返回地址,這裡就是返回的地址賦值給了p 字串常量 hello 出現在一個表示式中時,hello 表示式使用的值就是這些字元所儲存的地址 在常量區 而不是這些字元本身。所以,可以把字串賦值給指向字元的指標p,而不能把字串賦值給一個字元陣...

C語言中的空指標是什麼意思,C語言中,空指標NULL會佔記憶體嗎?多少位元組

這樣一看才知道大家對空指標的概念如此渾濁哦 首先 void 這不叫空指標,這叫無確切型別指標.這個指標指向一塊記憶體,卻沒有告訴程式該用何種方式來解釋這片記憶體.所以這種型別的指標不能直接進行取內容的操作.必須先轉成別的型別的指標才可以把內容解釋出來.還有 0 這也不是空指標所指的內容.0 是表示一...