C語言指標,c語言指標詳解

時間 2023-03-17 06:00:06

1樓:落陽

結果肯定是a撒。

你在函式point(char *p)呼叫後沒有返回*p的值 原因是你的函式就沒有return 語句, 且"形參的值不能傳遞給實參"

2樓:夢想窗外

在point函式中改變的只是指標的值,指標指向的內容不受影響。可以這樣修改一下:

void point(char *p)

3樓:匿名使用者

不知。樓上說的。

你懂了沒。就是p+=3

這句改變的並非主函式中p的指向。

而僅僅是子函式當中的。

改變方法可*p+=3;咯咯。

4樓:匿名使用者

你傳乙個*p過去,point方法裡面的p改變了,但是不是main方法裡的p沒變。

5樓:匿名使用者

#include

using namespace std;

char * point (char *p);

int main (void)

char *p=arry;

p=point(p);

cout char * point (char* p)指標的指向在函式中是不能直接更改。

必須要借助指標的指標!

c語言指標詳解

6樓:惠企百科

指標是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的乙個位址。資料在記憶體中的位址也稱為指標,如果乙個變數儲存了乙份資料的指標,我們就稱它為指標變數。

計算機中所有的資料都必須放在記憶體中,不同型別的資料占用的位元組數不一樣,例如 int 占用 4 個位元組,char 占用 1 個位元組。

為了正確地訪問這些資料,必須為每個位元組都編上號碼,就像門牌號、身份證號一樣,每個位元組的編號是唯一的,根據編號可以準確地找到某個位元組。

c語言用變數來儲存資料,用函式來定義一段可以重複使用的**,它們最終都要放到記憶體中才能供 cpu 使用。資料和**都以二進位制的形式儲存在記憶體中,計算機無法從格式上區分某塊記憶體到底儲存的是資料還是**。

當程式被載入到記憶體後,作業系統會給不同的記憶體塊指定不同的許可權,擁有讀取和執行許可權的記憶體塊就是**,而擁有讀取和寫入許可權(也可能只有讀取許可權)的記憶體塊就是資料。

cpu 只能通過位址來取得記憶體中的**和資料,程式在執行過程中會告知 cpu 要執行的**以及要讀寫的資料的位址。

如果程式不小心出錯,或者開發者有意為之,在 cpu 要寫入資料時給它乙個**區域的位址,就會發生記憶體訪問錯誤。這種記憶體訪問錯誤會被硬體和作業系統攔截,強制程式崩潰,程式設計師沒有挽救的機會。

變數名和函式名為我們提供了方便,讓我們在編寫**的過程中可以使用易於閱讀和理解的英文本串,不用直接面對二進位制位址,那場景簡直讓人崩潰。

需要注意的是,雖然變數名、函式名、字串名和陣列名在本質上是一樣的,它們都是位址的助記符,但在編寫**的過程中,我們認為變數名表示的是資料本身,而函式名、字串名和陣列名表示的是**塊或資料塊的首位址。

c語言指標定義

7樓:黑科技

(1)指標變數定義的格式:

型別識別符號 *變數名; 如:int *point;

注意:在定義int point;的時候 ,加粗部分的。

不是取值符,而是修飾point是乙個指標變數,如何確定point指向什麼型別的變數呢,需要進行下一步:看非加粗部分,int則表示point指向int型別變數或儲存int型別變數的位址。

(2)指標變數的初始化,先來看個例項:

說明:表示該變數的型別是乙個指標變數,指標變數名是p1而不是。

p1;如果在同一行定義多個指標變數應該是:int *p1, *p2;而不是int p1, p2或者 int

p1, p2;

給指標變數初始化有兩種方式:

在定義時初始化,如int *p_2 = b;

先定義再初始化,如int *p1; p1 = a;

*p1是p1所指向的變數的值;

乙個指標變數只能指向同乙個型別的變數。

(3)對於指標變數的兩個運算子「*」與「&」

& 取位址運算子 //a就代表a的位址(指的是a所在記憶體空間的起始位址)

c語言指標的概念

8樓:匿名使用者

開闢乙個位址空間。

空間中的內容記錄的是。

另乙個位址。

對他指向的資料進行操作。

和直接對變數操作是乙個意思。

c語言中指標是什麼

9樓:it小敏同學

我們都知道:c語言中的陣列是指 一類 型別,陣列具體區分為 int 型別陣列,double型別陣列,char陣列 等等。同樣指標 這個概念也泛指 一類。

資料型別,int指標型別,double指標型別,char指標型別等等。

通常,我們用int型別儲存一些整型的資料,如 int num = 97 , 我們也會用char來儲存字元: char ch = a'。

10樓:匿名使用者

把儲存著位址的變數叫做指標。

c語言指標詳解

11樓:興夏真堵薄

*t=*a

令指標t指向的位址的內容等於指標a指向的位址的內容。

如inti=1,j=2,*t=&i,*a=&j;,執行*t=*a後,i變為j的值2。

t=a令指標t指向指標a指向的位址。t和a現在指向同一位址。

如inti=1,j=2,*t=&i,*a=&j;,執行t=a後,t指向j。再執行*t=1則j的值變為1。

c語言指標

12樓:豬頭或火寶寶

你好!!

str1="1234";此時沒有指出陣列的大小,表示把字元:「1234」4個字元賦值給陣列,注意此時系統會自動在字串的最後新增乙個結束標誌即『\0』,輸出的時候,編譯器就是先判斷有沒有遇見結束標誌。

要是沒有就會一直輸出,直到遇見結束標誌。

而char str1[4]="1234";此時我定義陣列的大小是4,那麼此時的字元的個數就是4,那麼自動就不能在字串的最後新增乙個結束標誌,所以輸出的時候在輸出"1234"後還會輸出直到遇見結束標誌,因此最後還有一些亂碼,解決的方法可以把陣列的大小大於5就可以了。

*str3="6789"; 此時定義了乙個指標變數,此時系統會把字串:「6789」放到記憶體的靜態儲存區(即記憶體的一種,是靜態的原因是裡的值是不能修改的)並把字串的首位址賦值給指標變數str3,使指標變數指向字串;

str3[1]='2';表示要修改靜態儲存區的值,但是那裡的是常量不能修改的。所以出錯誤。

13樓:匿名使用者

char str1[4]="1234";

儲存的時候是:1 2 3 4 \0所以這是溢位的問題,你把陣列改成str[5]就ok了。

str3跟str1、str2分配的記憶體位址都不一樣,他們都是在棧上分配的位址,但是都給每個指標都 分配了位址,所以不一樣,而*str3是個字串指標,定義的時候就直接賦予了初始值,它的值就不能再改變了。

c語言指標

14樓:匿名使用者

首先int *fun(int a,int b)是乙個指標函式,返回乙個指向整數的指標。

p=fun(a,b)當把實參a=3,b=4傳入fun函式中時因為4>3所以int *fun(inta,inb) 函式執行結果是q=&b,帶回main()函式p=q=&b,最終結果輸出*p即輸出b的值4。

如果printf("%d",b);則執行結果是8。

在函式定義時參數列中的引數稱為形式引數,簡稱形參。形參必須是變數名。例如這道題裡int *fun(int a,int b)中的a,b即是形參。

在函式呼叫時參數列中的引數稱為實在引數,簡稱實參。實參可以是表示式,但必須具有確定的值。例如這道題裡main()函式中的p=fun(a,b);中的a,b均是實參,它們都有具體值。

15樓:匿名使用者

你的fun函式是按值傳遞,括號裡面(int a, int b)相當於把a和b的副本傳到函式裡面,所以main函式裡p指向的是b的副本的位址,你對b自增4後*p自然不變。 你如果把函式引數改為(int &a, int &b),就是8 了。

16樓:網友

關於實參和形參,你只要記住,出現在函式定義中的引數就是形參,而出現在函式呼叫中的引數就是實參。

因為執行的時候是順序執行,執行到p=fun(a,b)的時候,程式轉向被呼叫函式,即前面你定義的函式,而此時的b的值就是4,執行完呼叫函式之後,執行b+=4,在這個時候,變數b的值才變成8,但是與前面的函式呼叫無關了,不知道你明白沒有···

17樓:石水

//解答:主函式中*p並不是b

#include

int* fun(int b) /這裡b是形參,僅僅是定義了乙個變數而已。

int main()

//下面的是我對區域性變數的正常認識。

//即區域性變數生命週期結束後,應該將其銷毀。

//但是由上面程式可知,函式結束後並沒有立即將其銷毀。

//奇怪,疑惑中。。。

#include

int* fun(int b)

int main()*

C語言指標運算詳解,c語言中,指標的運算是怎麼算的,如pa

文庫精選 內容來自使用者 zzbo2022 讓你不再害怕指標 前言 複雜型別說明 要了解指標,多多少少會出現一些比較複雜的型別,所以我先介紹一下如何完全理解一個複雜型別,要理解複雜型別其實很簡單,一個型別裡會出現很多運算子,他們也像普通的表示式一樣,有優先順序,其優先順序和運算優先順序一樣,所以我總...

C語言指標問題,求詳解,求解一道C語言指標問題

文庫精選 內容來自使用者 zzbo2022 讓你不再害怕指標 前言 複雜型別說明 要了解指標,多多少少會出現一些比較複雜的型別,所以我先介紹一下如何完全理解一個複雜型別,要理解複雜型別其實很簡單,一個型別裡會出現很多運算子,他們也像普通的表示式一樣,有優先順序,其優先順序和運算優先順序一樣,所以我總...

C語言,指標問題,C語言,指標問題

指標的概念 指標是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的乙個位址。要搞清乙個指標需要搞清指標的四方面的內容 指標的型別,指標所指向的 型別,指標的值或者叫指標所指向的記憶體區,還有指標本身所佔據的記憶體區。讓我們分別說明。先宣告幾個指標放著做例子 例一 1 int ptr 2 char...