當前位置:首頁 » 編程語言 » c語言指針難
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言指針難

發布時間: 2022-01-14 14:53:34

c語言指針(不很難)

指針是按你下面一種形式為標準定義的。地址和值掛鉤了。
上面一種方法是地址,地址改變不影響值。所以操作後對於你printf("%d
%d\n",*p,(*q)++);沒有值的影響

Ⅱ c語言指針問題,額~感覺指針好難,求高手解釋

第一個:你設置的字元指針指向的是一個字元串,在設置字元數組的時候例如p【】,這就是一個指針,p是地址,這個聲明方式等同於用*p來指向一個字元串。而實際應用中在不知道數組長度時,我們通常使用字元指針來指向一個字元串,節省空間。
所以輸出的時候,我們需要的是輸出目標的地址,p就是地址,不需要使用*號來代表地址。

第二個不要使用【】就可以了,因為p【】指代指針,或者*p指代指針,沒有同時使用兩個符號表示指針來指向一個字元串的。

Ⅲ C語言,。指針問題。難。

第一種
#include <stdio.h>
void main()
{
int a,b,*p1,*p2,*t=null;
p1=&a;
p2=&b;
printf("input two Number:");
scanf("%d%d",p1,p2);
*t=*p1;
*p1=*p2;
*p2=*t;
printf("after two Number %d %d\n",*p1,*p2);
}
/*定義指針,然後對它們初始化是p1=&a; p2=&b;而不能寫成p1=a; p2=b;如果a b 是數組的話才能像這樣賦值。*/

第二種
#include <stdio.h>
void main()
{
int a[2],i,*p;
p=a;
printf("input two Number:");
for(i=0;i<2;i++){
scanf("%d",p);
p++;
}
i=p[0];
p[0]=p[1];
p[1]=i;
for(i=0;i<2;i++)
printf("after two Number %d",a[i]);
}

Ⅳ 為什麼c語言的指針有點難學

因為指針直接操作存儲單元地址,比較抽象,所以難學。

Ⅳ C語言中指針很難學嗎

一般人覺得指針難學因為在學指針前還沒把表達式和變數的概念搞清楚。
1. 指針變數保存的是內存地址。用指針訪問數據也稱為間接定址。類似於你找一個人,他住在「第一大院」。你直接去找第一大院就是直接定址。如果他的住址只有一個住在「第五大院」的人知道,你去第五大院問出他家在第一大院這就是間接定址。
1.+ 對於上面這種情況,如果我們認為第五大院是「知道他家住址的那個人的住址」,我們就可以進行一連串的間接定址。另一方面也說明指針變數保存的地址也是數據的一種。
2. 指針變數的類型。指針變數的類型目的*僅僅*在於減少編程中可能發生的錯誤。這一點必須明確。根本上說指針變數的類型就是地址。我們為了避免不必要的錯誤強行加上了「只能保存整數的地址」之類的約束。好比住在第五大院的人只會去記中年人的地址。
3. 指針的操作。
3.0 聲明:類型A的指針的類型寫作 類型A* 比如int*。與此同時int*本身也是類型,我們可以寫int**。就是int的指針的指針。
3.1 獲取地址,對於內存變數表達式 &運算符可以獲得其地址,類型是表達是類型的指針。比如對於變數int a。&a獲得的就是類型是int *的a的地址。
3.2 重定向,對於指針變數或者指針變數表達式。*運算符可以獲得其指向地址的變數,類型是原指針的上一級。對於int a; int* p = &a; *p等價於a,類型是int。因為*p是變數,我們可以進行x = *p(取值)和*p = 0(賦值)操作。
3.3 &和*都可以對變數表達式進行操作。比如數組int a[10]。我們可以通過&a[5]獲得a第5個元素的地址。又如int** a。*a是一個int*類型的變數,我們可以進一步地**a獲得類型是int的變數,這就是從第六大院的人口中問出知道A君住址的人在第五大院,然後再去第五大院問出A君住在第一大院的過程。
4. 數組和指針的混合。這個可以說是C/C++語法的bug...
int* a[4] 這個類型可以看成(int*)[4] 元素是int*類型,有4個元素
int (*a)[4] 這個其實是(int[4])* 指向int[4]類型變數的指針。
4.+ 數組變數其實也是指針。int b[4]; 變數b在多數情況下就是一個const int*,指向數組b所佔用的內存,也就是數組b的第一個元素。*b和b[0]是等價的。對於int *a;我們可以直接進行a = b的操作,讓指向數組b。
5. 指針的加法。對於int *a;我們可以進行a + N, a - N的運算。a + 1指向a指向的元素的下一個元素,相應的a - 1指向上一個元素,以此類推。於是*(a + 1)就對a指向的下一個元素進行重定向,等價於數組運算a[1]。
5.+ 對於int *a, *b; a - b獲得的是b到a之間相差多少個元素,類型是int。比如 int x[5]; int *a = &x[0], *b = &x[3]; b - a的結果是3。相應的a - b的結果是-3
這些大體概括了指針的基本內容,可能有疏漏,指針的應用就是指針的基本操作和其他表達式、變數操作的配合。

Ⅵ c語言指針好難啊

指針指向變數地址,我覺得就是把指針當地址用就好。。。

Ⅶ C語言中最難的問題,指針問題!

這兩種寫法都可以的!
char *p;
char s[5]="skl" ;
p=s; 首先是聲請一個指向char類型的指針變數p,然後將指針p指向數組s的首地址。

char s[5]="skl" ;
char *p=s; 這個意思是 定義一個char指針p然後給他初值,值為s數組的首地址。

Ⅷ 為什麼都說C語言指針難

指針確實比較難,當然這是相對而言的。不是每個人對於剛接觸的東西感覺都是一樣的。指針對於大多數人來說確實不容易,不過呢要想找到一道能讓人發狂的指針問題也不是什麼難事。

Ⅸ C語言中的指針好難學的,該怎麼辦呀

指針可以說是c的一大特色,很多人對它卻不慎了解,其實可以通過比較形象的方法讓你明白,指針到底是個什麼東西。c語言里的數據存儲沒有指針介入時就是直接操作的,就像你去一幢樓找人,保安都是直接把人帶給你的,c存取數據也這樣,但是有時候就是不知道這個變數的名字,也就是你不認識那個人叫什麼,還能找到那個數據或人么,那就是可以在c中用指針來實現,相當於你不知道那人叫什麼,但是你知道他住那個房間(我們這里假設一個房間就住一個人),保安還是可以把人帶給你,c也一樣,你指出了那個數據放在那個位置了,cpu也可以把數據找給你,一樣的道理。還有就是這個會有什麼好處呢,就要說道數組了,你在連續的內存單元存了一堆數,類似你的一群朋友住在那個樓里,而且是挨個住的,你要把他們叫出去玩,就如你要把數據拿出來用,那麼本來一搖一個一個的報名字給保安,說哪個人那個人等等幫我找下,c里也可以通過這種方法來實現,但明顯太麻煩了,如果你知道第一個人住的房間號,然後比如有有10個人,那麼你只要說幫我叫下幾號到幾號人(指他們住的連續的房牌號),一下就哦了,保安也更容易做到,因為保安人名字可能不是知道,但是房間號一定知道,c里也一樣,你不需要一個一個去調用這些數據,直接知道他們的第一個數據的地址,然後挨個往下數說到那個位置的數據幫我調用下就可以了,其實你給了一個變數,cpu還是要通過地址去找找到那個數,類似你和保安說那個人名字,他還是要查出他住那個房間一樣。希望指正,也希望你能夠對指針有很好的應用