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

時間 2021-05-04 18:27:47

1樓:百度文庫精選

內容來自使用者:zzbo2022

讓你不再害怕指標

前言:複雜型別說明

要了解指標,多多少少會出現一些比較複雜的型別,所以我先介紹一下如何完全理解一個複雜型別,要理解複雜型別其實很簡單,一個型別裡會出現很多運算子,他們也像普通的表示式一樣,有優先順序,其優先順序和運算優先順序一樣,所以我總結了一下其原則:從變數名處起,根據運算子優先順序結合,一步一步分析.下面讓我們先從簡單的型別開始慢慢分析吧:

intp;

//這是一個普通的整型變數

int*p;//首先從p處開始,先與*結合,所以說明p是一個指標,然後再與int結合,

//說明指標所指向的內容的型別為int型.所以p是一個返回整型資料的指標

intp[3];//首先從p處開始,先與結合,說明p是一個陣列,然後與int結合,

//說明陣列裡的元素是整型的,所以p是一個由整型資料組成的陣列

int*p[3];//首先從p處開始,先與結合,因為其優先順序比*高,所以p是一個陣列,

//然後再與*結合,說明陣列裡的元素是指標型別,然後再與int結合,

//說明指標所指向的內容的型別是整型的,所以p是一個由返回整型資料

//的指標所組成的陣列

int(*p)[3];//首先從p處開始,先與*結合,說明p是一個指標,然後再與結合

//(與"()"這步可以忽略,只是為了改變優先順序),說明指標所指向的

//內容是一個陣列,然後再與int結合,說明陣列裡的元素是整型的.

//所以p是一個指向由整型資料組成的陣列的指標

int**p;//首先從p開始,先與*結合,說是p是一個指標,然

2樓:最大的寶寶

好好的一本書,翻譯得狗屁不通。我想這個函式應該是這樣子的:

int fun(char str)

至於你的問題,編譯器難道沒有提示?a和b都是區域性變數,出了函式的範圍就應該視為無效,最忌諱把它們的地址返回給呼叫者使用

3樓:灰白色回

你寫的函式,它返回值不是一個地址嗎?為什麼要puts(ch(n))?

c語言指標的賦值問題

4樓:大野瘦子

指標在用要注意初始化,例如:

int *p;

p為指標,地址是未知的,如果直接賦值

*p=a;這樣編譯可以通過,但是會產生警告,p的地址是隨機分配的,這樣對未知的地址賦值很危險,可能會覆蓋掉某些重要資料,所以避免這種危險,在定義指標時注意初始化,也就是賦值。

可以int *p=&a;

或者int *p;

p=&a;

然後再對p進行操作

有錯。注意大小寫,還有

int a=9;

int *p;

p=&a;//這個是指標指向a

*p=8;

這樣就對了。

指標的賦值

int *p;

int a;

int b[1];

p = &a;

p = b;

指標的賦值,「=」的左運算元能夠是*p,也能夠是p。

當「=」的左運算元是*p時,改變的是p所指向的地址存放的資料;

當「=」的左運算元是p時,改變的是p所指向的地址。

陣列的變數名b表示該陣列的首地址,因此p=b;也是正確的

同型別的指標賦值:

int val1 = 18,val2 = 19;

int *p1,*p2;

p1 = &val1;

p2 = &val2;

p1 = p2;   //注意啦,p1指向了val2,而沒有指向val1

備註:字串與指標的初始化和賦值

初始化:

char *cp = "abcdefg"; //這個初始化過程,是將指標cp指向字串的首地址,而並非傳遞字串的值。由於,在c語言裡面,沒有總體處理一個字串的機制

賦值:cp = "abcdefg";

*cp=」abcdefg」 ;//錯誤!字串常量傳遞的是它的首地址,不能夠通過*cp改動該字串的值,由於該字串為常量,而它僅僅是簡單的將指標指向該字串常量。

5樓:林聲飄揚

有錯注意:用指標變數前,必須對指標變數賦值如:int i, *p1;

p1=&i;

再如:int a, b;

int *p1, *p2;

*p1=10; *p2=100;

但指標變數未賦值,即指標指向未知地址,這樣是錯誤的因此:絕對不能對未賦值的指標變數作「指向」運算。

int a=9,b;

int *p=&b;//必須加上這一句

*p=a;

*p=8;

這樣就不會產生錯誤

6樓:匿名使用者

注意大小寫!還有

int a=9;

int *p;

p=&a;//這個是指標指向a

*p=8;

這樣就對了。

7樓:七先生是遊戲鬼才

這個還是比較複雜的,你可以學習一下

8樓:匿名使用者

p=&a//把a的地址給指標p

9樓:匿名使用者

語法上沒錯,但可能出現警告,破壞程式其他資料

10樓:渾濃強浩然

p就是一個指標,他指向一個地址,而&p就是p剛才所指向的具體地址,*p是p指向地址裡面的東西。也就是值。*p=&a的意思是把a的地址給了*p,這樣的話p就指向

(指向a的地址)的地址。對指標賦值必須是int*p=null;或者int

*p;p=null。

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

最大的寶寶 pointer是指標指向的一個值,此時為2,這個值再自加1自然為3。pointer此時還指向值2,減2的含義是指標回退兩個元素,自然指向了值6。指標本身有值,表示它指向的地址,這個值可以運算,表示對地址的修改。而指標指向的值,其實就是位於這個地址所存的值。在彙編以上層次的程式設計中,記憶...

c語言指標概念問題,C語言指標問題(初學者)

文庫精選 內容來自使用者 維旺 精選 沒有那麼複雜,從彙編或者計算機原理層面,反而更用不到型別,那裡只有地址和偏移。定義變數,無法是兩個要素,型別和變數名,型別讓編譯器知道可以做哪些運算和如何計算 變數名讓編譯器做成一個名字和地址的對應,以便把後面作用域內所有的p,都翻譯成這個地址。所以,沒有那麼糾...

指標問題c語言

好幾個地方都有問題,幫你改改 include int f int x,int y int main int f 上面已經宣告瞭函式f了,這裡又有一個,去掉int i,a,b a 0 a初值為0 int p int,int 這個函式指標所指向的函式應該有兩個int型引數,即和f的引數一樣 p f 給函...