c語言指針

c語言指針

平臺用戶的互動中精選與c語言指針相關的:1、c語言指針是什么意思! 2、關于C語言指針變量*p++ 、*(p++)、(*p)++的區別 3、c語言中,p為指針,那么*p和&p是一樣的嗎,什么區別 4、C語言指針,int a=1; int *p; 其中p=&a和*p=&a有什么區別?p的值是否相同? 5、C語言中“指針”和“指針變量”的區別是什么?? 6、為什么c語言指針那么難? 7、c語言指針輸入 8、C語言指針什么時候要帶*什么時候不帶*? 9、C語言指針**p是什么意思 10、c語言中指針加不加*有什么區別
c語言指針
平臺用戶 2018-06-06 16:40:31

下面是精選平臺用戶互動時的最佳討論

囂張拔扈
囂張拔扈


囂張拔扈:c語言指針是什么意思!

白話一點。謝謝了!
下面的解答已被51人點贊
指針其實是一個整形變量,與其它數據不同的是,它的作用是用來存儲其它變量的地址,比如說
int a;
int *p = &a;
這里面,a是普通的整形變量,p則是指針,用來存儲變量a的地址,
這樣做的話,就可以很容易的找到變量a所在的位置,從而得到a的值
最后一次編輯時間 推薦于2017-10-03 13:54:53
nika羽翊習習
nika羽翊習習


nika羽翊習習:關于C語言指針變量*p++ 、*(p++)、(*p)++的區別

int a=2,*p=&a,*q=&a; printf("%d %d\n",*p++,*(q++)); p=&a;q=&a; printf("%d %d\n",*p,(*q)++); 在教學視頻上面看到這個 說答案是 2 2 3 2 但怎么都不明白怎么算的 剛剛學到指針 還不是很理解 麻煩高手說一下計算過程 怎么算出這個結果的 ... int a=2,*p=&a,*q=&a;
printf("%d %d\n",*p++,*(q++));
p=&a;q=&a;
printf("%d %d\n",*p,(*q)++);

在教學視頻上面看到這個
說答案是
2 2
3 2
但怎么都不明白怎么算的
剛剛學到指針
還不是很理解
麻煩高手說一下計算過程
怎么算出這個結果的
叩謝~
下面的解答已被6344人點贊
1. printf中表達式的計算是右結合的,即從右向左運算;但輸出還是從左向右
2. 第一個printf,先取q所是單元的值顯示,即為2,再對q++,即q所指單元地址后移一個單元,這里無意義;然后再對p指單元后自增,先輸出2!*”運算符的優先級高于“++”運算符。
3. 第二個printf,都是對p和q所指單元的值進行操作,(*q)++先輸出a的值2,再將其值加1變為3;再將p所指單元的內容a的值輸出3
最后一次編輯時間 推薦于2017-11-25 11:54:12
99989918
99989918


99989918:c語言中,p為指針,那么*p和&p是一樣的嗎,什么區別

下面的解答已被9188人點贊

上面是我自己做的原理圖,深入到內存中,你就懂了.不懂隨時call

追問

在網上復制的一個c語言程序怎么粘貼到tc2.0中

追答

新建一個.c的文件啊,然后再讀取

追問

是先粘貼到記事本,保存為.c   用tc打開他嗎
可以放在桌面嗎?
冒昧的問一句,閣下從事的工作與c編程有關嗎

追答

恩,是保存為.c然后讀取.
大學學過C,有點基礎.不是編程工作

更多追問

最后一次編輯時間 推薦于2017-12-16 08:14:51
mylove2693
mylove2693


mylove2693:C語言指針,int a=1; int *p; 其中p=&a和*p=&a有什么區別?p的值是否相同?

下面的解答已被1497人點贊
指針本質就是存儲內存地址的一個變量。所以指針可以指向某個變量在內存中存儲的單元格嘛。變量去訪問單元格最后也是編譯器通過變量名和地址一一對應去查找的。而指針里面直接存儲的就是地址,所以直接可以訪問地址所對應的單元格。

不知道樓主說的是說明情況。所以幾種可能的都說一下:

測試代碼
#include "stdio.h"
#include "conio.h"

main()
{
int a=1;
int *p=&a;
int *q,*r;
q=&a;
*r=&a;
printf("p=%d,q=%d,r=%d",p,q,r);
getch();
}

int *p=&a ; 這是很標準的,把a的地址個p指針變量。
int *q;q=&a;這也是很標準的。定義一個指針變量,然后將a的地址賦值給她。
int *r; *r=&a; 首先r是個指針變量,但是r指向內存中那個單元格呢?r沒有賦初值就開始用了。這是很嚴重的。r是個游離態的指針。 *r表示取出r對應的那個地址中的值。r都沒有指向一個具體的單元格,如何去取值啊。
最后一次編輯時間 推薦于2017-11-25 01:39:14
殤宗康
殤宗康


殤宗康:C語言中“指針”和“指針變量”的區別是什么??

下面的解答已被6990人點贊
比較嚴格的說法是這樣的:
系統為每一個內存單元分配一個地址值,C/C++把這個地址值稱為“指針”。如有int i=5;,存放變量i的內存單元的編號(地址)&i被稱為指針。
“指針變量”則是存放前述“地址值”的變量,也可以表述為,“指針變量”是存放變量所占內存空間“首地址”的變量(因為一個變量通常要占用連續的多個字節空間)。比如在int i=5;后有一句int *p=&i;,就把i的指針&i賦給了int *型指針變量p,也就是說p中存入著&i。所以說指針變量是存放指針的變量。
有一個事實值得注意,那就是有不少資料和教科書并沒有如上區分,而是認為“指針是指針變量的簡稱”,如對int *p=&i;的解釋是:聲明一個int *型指針p,并用變量i的地址初始化;而嚴格說應該是聲明一個int *型指針變量p才對。所以有時看書要根據上下文理解實質,而不能過于拘泥于文字表述。
最后一次編輯時間 推薦于2017-09-19 11:33:36
匿名
匿名


匿名:為什么c語言指針那么難?

下面的解答已被5715人點贊
指針確實難于理解。指針具有兩個身份:

第一,指針本身是一個變量。只要是是變量,它就占用內存地址。當然如果沒有分配內存地址,不在其內。

第二,指針包含一定的一個內容。指針所特殊的就是,他的內容保存的是其他變量的地址。

以上兩點可以通過書中的示例7-7有比較好的體現。

例如,定義指針變量intp1。 intp1=&a 就表示 intp1保存的信息為a的地址。
而*intp1表示是intp1所保存地址的內存單元所保存的值,實際就是a的值。

所以,你給出的 *intp1=&a; 是一種不太合適寫法。我們可以這樣假設,再給一個變量b。令*intp1=b=&a,則
b=&a,說明b保存的a的地址,這樣b就是一個指針。那*intp1=b,則說明 intp1所保存的地址指向的內存單元為b。所以,intp1可以看成a的指針的指針。

上面這個例子比較繞,慢慢想想,就理解了。
最后一次編輯時間 推薦于2018-03-08 12:00:53
吾乃無比牛X
吾乃無比牛X


吾乃無比牛X:c語言指針輸入

vc6.0 #include<stdio.h> int main() { char *str; str="l love china"; puts(str); return 0; } 運行成功 而 int main() { char *str; scanf("%s",str); puts(str); return 0; } 出錯 在輸出時無法顯示 調試就出... vc6.0
#include<stdio.h>
int main()
{
char *str;
str="l love china";
puts(str);

return 0;
}

運行成功

int main()
{
char *str;
scanf("%s",str);
puts(str);

return 0;
}
出錯 在輸出時無法顯示 調試就出錯了
在我看來這二者時一樣的 求指教
下面的解答已被3309人點贊
看來樓主沒有理解指針必須要初始化這一定律啊。
char *str;
str="l love china";
指針 str 是指向字符的,也就是指向了一個地址
賦值為str="l love china" 這里指針str的值也就是字符串 "l love china" 的首地址
而輸出的時候puts(str); puts中的參數當然也是首地址了,如果puts的參數是字符數組,那實際上也是地址,因為數組的名字就是數組第一個元素的地址。當地址是字符串的地址時,指針會自動下移一個位置。直到遇到'\0'為止
而下面這個
char *str;
scanf("%s",str);
指針沒有初始化,所以是不對滴。

其實在C語言中想要動態輸入字符串(也就是不浪費空間,還是很麻煩的),直到怎么回事就行,不必太糾結這個問題
最后一次編輯時間 推薦于2017-09-07 19:04:36
知道手機網友
知道手機網友


知道手機網友:C語言指針什么時候要帶*什么時候不帶*?

下面的解答已被9971人點贊
同學 
這個不能硬背 要理解
帶*表示的那個內存地址儲存的值
不帶*表示那個內存的地址
int *p,a; p是指針 a是整數
int *p,*a; p是指針 a也是指針
int *p=&a等價int *p; p=&a;
最后一次編輯時間 2013-02-22
杜D偉
杜D偉


杜D偉:C語言指針**p是什么意思

下面的解答已被3005人點贊
例如  int **p ;
解釋:
int *p;則p是一個指向int型的變量的地址, p是地址;
*p指的是內容
而int **p;p指的是一個地址,p放的是*p的地址, *p指的是存放int 的地址.
最后一次編輯時間 推薦于2017-09-27 06:31:36
就是愛糖糖520
就是愛糖糖520


就是愛糖糖520:c語言中指針加不加*有什么區別

下面的解答已被4837人點贊
比如 int a=5; int *p =&a; p就是5的地址  *p就是p地址上的內容5
最后一次編輯時間 推薦于2018-03-13 23:51:29
金蟾捕鱼单机下载