1樓:邱俊山
應該是的,還可以用f(a+i)的形式。
2樓:特別想家還有媽
去程式設計嗎?我學這些的是一頭霧水。
c語言中指標怎麼使用?
3樓:大野瘦子
1、使用場景
使用指標時,必須將它指向一個變數的地址或者為它分配
空間方能使用,如下所示:
#include
#include
int main(int argc, char const *argv)
;int *b,*d;
int c=2;
int *e=a; //e指向a陣列首地址
//*b=2; 無法直接初始化
//printf("%d\n", *b);
e=e+2; //移動兩個地址單元
d=&c; //d指向c的地址來表示值
c=4; //修改原c變數的值,d指標的值會發生改變
b=(int *)malloc(sizeof(int));//為b分配一個int型空間來直接儲存值
*b=2;//分配空間後可以直接賦值了
printf("this is e,b,c,d :%d %d %d %d\n",*e,*b,c,*d);
2、型別說明
(1)int *a :表示一個指向int型變數的指標,指向的是變數的地址單元
(2)char *b:表示一個指向char變數的指標
*a表示的是這個指標指向地址的值,a為此指標本身的地址,這點要明確,一般用*(a+1)、*(a+2)來表示值,如:
int nums[5]=;
int *a=nums;
printf("%d %d %p\n",*a,*(a+1),a);
指標的運算
指標指向變數地址,若原變數的內容發生了變化,它本身也會發生變化,指標之間的運算一般為值運算和地址運算
(1)值運算:直接通過*運算方式,像a+*(a+1),結果為第一個元素與第二個元素相加。
int nums[5]=;
int *a=nums;
(2)地址運算:通過a+i的方式.指標會指向a的下i個地址。
int nums[5]=;
int *a=nums;
a=a+2;
printf("%d\n",*a);
結果輸出2。
4樓:圓隨緣滅
1、指標指向變數:
下面有這樣一個**塊:
int main()
void test(int x,int y)
最後輸出的結果還是a=10,b=15。
因為在函式呼叫時,實參和形參之間只是值傳遞。
但我們使用指標結果就不一樣了,如:
int main()
void test(int * x,int *y)
輸出結果a=15,b=10。變數a和b的值發生了交換。
這是因為我們利用指標訪問變數的儲存單元,間接修改變數的值。
2、指標指向陣列:
定義一個陣列並初始化,int array[5]=,定義一個指標變數並把陣列的地址賦給它,int *p=array,注意陣列名就是陣列的地址,而且陣列的地址就是首元素的地址。
因此我們的指標變數就指向了陣列的首元素,*p=2。如果把(p+1),那麼指標變數就指向了陣列的下一個元素5,因此我們可以利用指標來遍歷陣列的各個元素:
int main()
;int *p =array;for(int i=0;i<5;i++)return 0;}
3、指標指向字串:
我們都知道用陣列儲存字串,如char name[20]="jack",上面已經簡單講述了指標指向陣列,所以我們可以這樣做,char *name="jack",指標變數指向字串的首個字元並可以依次訪問字串的各個字元。
4、指標指向函式:
我們需要知道怎樣表示一個指標指向函式,說白了就是語法要正確,下面我也取一個**塊來說明一下:
int sum(int x,int y)
int main()
不難發現上面**塊里語句(*p)(a,b)可以用p(a,b)來代替,因為p和sum就是一樣的,只是用前者可能更容易理解一點。
而我們要知道怎樣定義一個指標指向函式,int (*p)(int,int)這是固定寫法,前面的int是指標將來指向的函式的返回值的型別,如果沒有函式返回值,那就是void,後面括號裡的兩個int當然就是指標將指向的函式的形參。
5、指標指向結構體:
我們首先首先定義一個結構型別,
struct student
;再根據型別定義結構體變數struct student stu=;
定義一個指標指向結構體型別,struct student *p;把結構體變數stu的地址賦給指標變數p,p=&stu;
我們可以有3種方式來訪問結構體中的屬性ages:stu.ages=15;(*p).ages=15;p->ages=15;不過第三種方式在c語言中只能用來指向結構體。
5樓:匿名使用者
我是這樣理解的:
在c語言中,你需要定義變數,那麼你所定義的這個變數本身你要理解兩層含義:
(1)變數中的值是多少?有了值我們可以直接拿變數參與運算,eg. int a=5;在計算的時候a就表示5;
(2)變數儲存在記憶體中的什麼位置?變數的儲存位置,就是變數的地址,那麼這個地址可以用指標來儲存,eg. int a=5, *p=&a; 在這裡p就是指標變數,儲存了變數a的地址,這個時候你要是用a變數的值,即可以直接用a,也可以用*p,*p是通過p這個指標(也就是a的地址),間接的找到a,在程式中*p與a是等價的。
6樓:匿名使用者
指標是指向地址的,所以你對指標修改也會影響到原地址的值,所以當你需要在函式裡修改函式外的變數時可以考慮指標,當然指標還可以連線結構體裡的節點之類的,後面還有跟函式有關的,只要多揣摩就會了解了
7樓:欣夢魂
指標可以理解為地址即指向地址的指標,在使用之前要明確三個問題,指標的型別,指標指向的型別,指標指向值的記憶體區域。通過傳遞值的地址來傳遞值
8樓:我是張玉柱
就是地址的地址,之後會學到指標型函式就是函式引數是指標型別的,我們平時學的是int ,float等等,還會學到函式指標就是呼叫函式的地址。
c語言中用指標的好處有哪些C語言中指標的作用是什麼?
指標非常的好,它把相同的事物歸類,然後把事物做出標記,避免給相同的特點做變數。比如說你和你同學,你們兩個人都有心臟 肝 肺等器官,如果命名心臟1 心臟2這樣比較麻煩,這時如果用上指標,指向你說心臟時說的是你的心臟,指向你同學時說的是你同學的心臟,如果人非常的多,你不用指標,那麼命名心臟1 2 3 4...
c語言指標和函式的問題,C語言指標和函式的問題。!
樓主你好。include int main printf 修改前,陣列元素的值 段1 print array a,5 printf 修改後,陣列元素的值 段2 change values a,5,3 print array a,5 return 0 函式功能 修改一位陣列元素的值,規則是 新值 原值...
C語言中,指標常量和常量指標有什麼意義?能否舉例說明一下
指標常量的意思是指標指向的地址無法被改變 而常量指標意思是指標指向的資料不能被改變,但指標可以移動 c語言中的陣列名字是指標常量還是常量指標呢 陣列名是指標 來常量,指源針不是有常量指標和指標常量和常量常指標嗎?地址是絕對的,score指向受保護,但首地址的內容可以改變,所以陣列首地址應該是指標常量...