c語言指標問題,求解答,C語言中的指標問題,求解答

2021-03-04 08:54:42 字數 5984 閱讀 7338

1樓:傷我中國心

1,*是取值運算子,因為你要判斷tt的值的情況,所以要用 *2,tt++相當於

tt=tt+1;這個是指標向後移動,不需要取值,謝謝,望採納

2樓:匿名使用者

你的tt是指標吧。

tt指向的是

位址(比如位址值為:10ff:1000),*tt是取這個位址中儲存的資料,

而tt++意思把tt指向的位址值+1,即tt現在指向了(10ff:1001)這個位址,這個位址中儲存的下乙個資料。

if(*tt>='a'&&*tt<='z') 為什麼這裡也要* 和剛才的解釋是乙個意思。

你需要看一彙編,了解一下計算機如何儲存資料的,再看這些就是常識了。

3樓:匿名使用者

加*號表示指標指向的位址單元資料,不加則表示指標變數的值(也就是所指向的那個變數的位址),例如:如果int t=10, *p; p=&t; 則*p和t等價,其結果都是10,而p則表示變數t的位址,也就是&t。

c語言中的指標問題,求解答

4樓:匿名使用者

好像有點多此一舉,直接使用rsnum就可以了。rsnum 就是陣列的首位址了。

如果一定要用指標就是要申明乙個指標來賦值。

c語言關於指標的問題,求詳細解答

5樓:匿名使用者

13:首先a+1是指a[1],然後取*指的是a[1]這個指標+2是第3個元素為6的位址

9:同上:為6

所以答案: d b

一道c語言指標問題,求解答,謝謝啦

6樓:聽不清啊

a)*ptr1和*ptr2都是int相加後賦值給intb)int不能賦值給*int,型別不匹配

c)同型別指標賦值

d)*ptr1和*ptr2都是int相乘後賦值給int

7樓:匿名使用者

這題是要你搞清楚,int變數

和指標變數的區別,*ptr1和*ptr2都是int型別,ptr1和ptr2是指標變數,不同型別的變數不能賦值。a)兩個int相加賦值給int,b)int賦值給指標錯了,c)指標變數相互賦值沒有問題,d)兩個int相乘賦值給int變數沒有問題。望採納~

8樓:匿名使用者

那只是一種說法,我們要調取當時的影像一定要翻看以前的回放,他可能說的是回放沒有了,這樣就會造成黑屏。為什麼回放會沒有呢,這個我猜大家就都會知道了,一般也就是內部的人知道監控主機的使用者名稱和密碼,偷偷的把那部分錄影檔案刪除了,我想大概也就是這樣

一道c語言指標的問題 求解答 謝謝 !

9樓:匿名使用者

&c和&ca:這兩bai個是肯定不相等的du,c是指向字串的zhi首位址dao即c的值等於字串的首內位址,而容c本身需要乙個位址空間存放即&c(就像i=3,i的值等於3,而&i是存放3的位址)。當把c傳入fun時,ca也指向該字串即ca的值等於c的值的副本,而這個值也許要乙個位址空間存放即&ca。

所以他們不相等。

++ca和&c[1]:這兩個值是相等的,他們都是存放b的位址。這裡要理解的是,把c傳入fun時並沒有建立整個字元陣列的副本,只是建立了指標c的副本,所以c和ca同時指向乙個字串。

&ca[1]和&c[1]:這兩個值也相等,他們和上面的其實是乙個意思。只是若編寫程式驗證時,若先驗證++ca則驗證&ca[1]之前先要ca--。

c和&c:由上知不相等。

10樓:匿名使用者

c 和&c不相等,&c 代表整個陣列的首位址,c是首元素的位址。&ca 只有當有引數傳進來的時候 才有意義。如果 函式 fun(c)這樣的話,是相等的。

11樓:匿名使用者

&c 和&ca : ca是函式裡的只是個變數由你賦給誰++ca 和&c[1] :這兩個是兩個完全無關的東西、&ca[1] 和 &c[1]:

這版與第乙個同理c 和 &c:c是個char變數時權陣列,&c是指標賦值用的不相等

12樓:匿名使用者

在定義的時候,

bai系統分配空du間給zhic和ca;其實你可以理解成daoc和ca是兩條街道內,組數里

面的元素是容街道的小房子,裡面的數就是門牌號碼。這樣好理解吧。。。。

當然,要求是你呼叫 void fun(char ca[10]){}; 的時候,理解成街道一模一樣,房子裡面的構造也一樣,但是位址不一樣。

&c 和&ca 分別表示c街道的第一間房子的位址和ca街道的第一間房子的位址,但是c和ca兩條街道位址本來就不一樣啊。

++ca 和&c[1]是不相等的,ca的位址和c的位址是不一樣的,用回上面的比喻,++ca理解成第一間房子的後面一間房子的位址,&ca[1]理解成ca街道第一間房子的位址。

&ca[1] 和 &c[1] 仿照第一問。

所以&c 和&ca 不相等,++ca 和&c[1]不相等,

c 和 &c 按照我上面的比喻應該是不等的,但是我執行了一下,是相等的!

我想應該是因為,組數的元素存放在位址裡,位址是最終的儲存位子吧,我也不是很明白,知道後和我說下。。。

c語言中指標問題(真的求,搞不懂,求解答)? 5

13樓:匿名使用者

第二章temp是乙個指標,沒有賦值的指標,操作的時候不加*,如果編譯器不報警告就可以正常執行。

c語言中指標的輸入輸出問題 求解答

14樓:匿名使用者

scanf()與printf()實際是兩個庫函式,它們在標頭檔案裡已經被寫好了!scanf()需要兩引數,乙個為字元型的表示輸入格式,另乙個為指標或位址,它應該指向你所要儲存變數的位址!而printf()需要乙個字元型引數,表輸出的資料和格式,後面要跟上輸出列表,後面的列表應該為具體的變數值,而不是指標或位址!

*p值指的是p所指的具體變數!而p是指指標,也就是p所指的變數的位址!所以他們不能亂用,現在應該明白了吧!

就像乙個max(int a,int b)函式 他需要兩個int 引數如果你給她別的資料,那肯定就是錯誤的了!

15樓:須憶象駿

第四行的指標變數p是不可以輸入的,是由系統分配的。而在第11行的指標就是p在和陣列的指標比較,但我認為這樣寫不好,你可以定int變數來控制迴圈的次數,這樣就不用指標變數了。

一道c語言指標問題,求大神解答。萬分感謝。

16樓:匿名使用者

#include

int main(int argc, char const *argv)

,,};// 初始

化二維陣列

int i,(*p)[4]=a,*q=a[0];//定義變數i//陣列指標p 初始化為二維陣列首位址

//一級指標q 初始化為二維陣列首元素位址for ( i = 0; i < 3; i++)//for迴圈,迴圈3次

for ( i = 0; i < 3; ++i)return 0;}

17樓:馮小氣氣

如果最後printf是printf("%d ",a[i][i])的話就可以這樣解釋:

1.二維陣列實際是3個一維陣列的結合a[0]= a[1]= a[2]=

2.(*p)[4]: *p指向的是a[0],*(p+1)指向的是a[1],*(p+2)指向的是a[2]

3.*q實際指向也是a[0][0]

4.第乙個迴圈體中只有i==0時才有對陣列元素的操作,表示式實際為(*p)[0 + 0 /2] = (*q)+1,即是(*p)[0]=(*q)+1,也就是a[0][0]=a[0][0]+1,即a[0][0]=1+1=2

5.輸出的時候是第i行第i列元素,也就是a[0][0] a[1][1] a[2][2]

18樓:匿名使用者

第二,是否能產生安全感,來自多方面的因素,有主觀的和客觀的。這裡我們就主要談談

主觀方面。要讓對方產生安全感,首先要做的就是讓對方相信自己。讓對方相信自己這是一件不容易的事,你必須在言談舉止方面能夠體現出來,比如:

說話要算數,說得到做得到,做不到就不要亂承諾;經常給她說說心裡話,說說你的想法,經常問候和關心一下她的生活;無論多忙都不要不理她,經常給她一些驚喜;不要再對其它女孩太好,言談和行動上都一樣;願意為他改掉你的不良習慣。

19樓:匿名使用者

你的return四遍完全就是沒有任何用的,你已經定義了全域性變數了,不用return。問題在於你雖然敲擊了回車,但那並不會被輸入。所以你while迴圈可能會一直迴圈下去,直到碰巧碰到乙個字元等於'\n'

#include

int l,n,b,o;

int count(char a)

}int main()

;printf("請輸入一句話:");

scanf("%s",str);

count(str);

printf("字母:%d\n數字:%d\n空格:%d\n其他字元:%d\n",l,n,b,o);

return 0;

20樓:匿名使用者

很多事都不是絕對的,不同的人有不同的做法。

21樓:匿名使用者

題目抄的都有問題……最後的 j 是從石頭縫裡蹦出來的?

22樓:韓稚生

1.二維陣列實際是3個一維陣列的結合a[0]= a[1]= a[2]=

2.(*p)[4]: *p指向的是a[0],*(p+1)指向的是a[1],*(p+2)指向的是a[2]

3.*q實際指向也是a[0][0]

4.第乙個迴圈體中只有i==0時才有對陣列元素的操作,表示式實際為(*p)[0 + 0 /2] = (*q)+1,即是(*p)[0]=(*q)+1,也就是a[0][0]=a[0][0]+1,即a[0][0]=1+1=2

5.輸出的時候是第i行第i列元素,也就是a[0][0] a[1][1] a[2][2]

c語言中指標加減問題,求解答。

23樓:

首先:float a[10],*p,*q;

p=&a[4],q=&a[7];

那q-p=2(a[4]與a[7]之間有兩個元素) ***這裡就不對了,q-p = 3 不是等於2,

可以用printf("%d",q-p);看看。

p+3-p = 12 是位址按「位元組」排列的位置差,表示p+3和p之間有12個位元組

q-p = 3 表示q和p之間有3個float型別的資料,每個佔4位元組,3x4 = 12 和上面的結果一致

24樓:匿名使用者

嗯,沒錯,對指標的加減運算是以步長為單位的,不過這是對編譯器來講的。但是對於機器來講,指標也是二進位制資料,在機器內對它們進行運算和一般的資料是一樣的,只是因為編譯器知道它們是指標,所以編譯器告訴你的是指標之間的步長。以下是乙個測試的程式,應該能說明問題吧,僅供參考:

#include

#include

void main()

25樓:匿名使用者

所謂p+3-p=12只是個說法而不是語法。

如果你把位址當整數那麼它們的差是12. 如果你把位址當float* 他們的差就是3

26樓:匿名使用者

這不是與p+3-p=12矛盾,而是,這個等式本來就不成立好不。學指標的時候會有點糊塗,這個很正常。

你把兩個東西混淆了:陣列的下標和實際的位址。

float型別的指標,在位址上來說的確是按4位元組為單位移動的,但是在陣列裡面還是一格一格一棟棟餓啊,這個一格的單位是4位元組。

p+3-p,你等式左邊的演算法是在陣列裡的單位,既一格一格移動;

=12,你右邊的是按照位址的實際大小得出的。

兩邊表示的不是一種單位啊。。。

還有就是這種理論上的東西你越想越糊塗,實際去寫乙個測試程式,把指標指向的位址打出來看看 不久知道了?

c語言問題,求解答,求解答c語言問題

首先執行getchar,就是先讓你輸入乙個字元,然後執行putchar,就是將剛剛的字元輸出,然後判斷字元是不是 是的話退出,否則繼續執行迴圈。迴圈體只有乙個 getchar每接收乙個字元,putchar就進行輸出,當為 時,則!後面若還有字元,按換行鍵後則不會輸出 輸出的字元要從getchar函式...

c語言關於指標的求解,C語言中關於指標的指標問題?

int x 10 p1 a x 3 x 3 3 陣列從0開始,3其實是第四個 b p1 x 3,p1 先執行p1 x 3,也就是指向x 3 因為p1定義成指標。p1 這時候先執行再加,這表示式仍然是3 c p1 x 2,p1 p x 2 x陣列的位址加2,也就是指向x 2 x 2,這時候p 同時也是...

C語言問題,求解答,C語言問題,求大神解答

f函式中的a每次使用外面傳入的2,b是區域性變數,後每次都是1,c是靜態變數,函式每次執行會在上次值 1 所以最後執行三次,輸出為789 程式的輸出是 789 c語言問題,求解答 執行abc a 1 首先進行巨集代換過程,是把 a 1去替代 定義的巨集函式 x x 中的x,即得到式子 a 1 a 1...