C語言指標函式,c語言中指標怎麼使用?

2021-03-22 03:05:47 字數 3161 閱讀 5976

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指向受保護,但首地址的內容可以改變,所以陣列首地址應該是指標常量...