在c語言中對變量的訪問有兩種,第一種是直接訪問,第二種是間接訪問。
我們先來看直接訪問:
#include
int main()
{
int a = 10;
printf("%d\n", a);
a=20;
printf("%d\n",a);
system("pause");
return 0;
}
運(yùn)行結(jié)果如下
這種對變量直接賦值的過程稱為直接訪問。
第二種就是間接訪問,即使用指針進(jìn)行訪問
#includeint main()
{
int a = 10;
int* p = &a;
printf("%d\n", a);
*p = 20;
printf("%d\n", a);
system("pause");
return 0;
}
運(yùn)行結(jié)果如圖
我們發(fā)現(xiàn)a的值也被修改了。
正文:為了將不同功能的代碼封裝成一個個函數(shù),并且想對主函數(shù)里一些數(shù)據(jù)進(jìn)行修改,我們就要使用所謂的指針來進(jìn)行相關(guān)的操作。
1.指針到底是什么?
我們定義一個變量 int a=10; 那么&a就是一個指針。
2.怎么做?
我們需要定義一個指針變量用來保存指針,例如:int a=10; int* p=&a;
(int*)表示這是這個指針的類型是整型,定義指針變量的類型必須和變量類型一致。
3.為什么指針可以?
C語言里,變量存放在內(nèi)存中,而內(nèi)存其實就是一組有序字節(jié),每個字節(jié)有唯一的內(nèi)存地址。CPU 通過內(nèi)存尋址對存儲在內(nèi)存中的某個指定數(shù)據(jù)對象的地址進(jìn)行定位。這里,數(shù)據(jù)對象是指存儲在內(nèi)存中的一個指定數(shù)據(jù)類型的數(shù)值或字符串,它們都有一個自己的地址,而指針便是保存這個地址的。
4.原理圖:
p指針變量保存a的地址,此時*p=10;可通過解引用(*p)實現(xiàn)對a值的操作;?
5.實踐(交換兩數(shù)的值)
#include#include#includevoid swap(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int a = 10;
int b = 20;
swap( a, b);
printf("%d %d\n", a,b);
system("pause");
return 0;
}
運(yùn)行結(jié)果 :
使用指針后:
#includevoid swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int a = 10;
int b = 20;
swap(&a, &b);
printf("%d %d\n", a,b);
system("pause");
return 0;
}
運(yùn)行結(jié)果:
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧