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...