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