c語言中指標加減問題,求解答C語言中指標問題真的求,搞不懂,求解答?

2021-03-06 00:28:57 字數 3751 閱讀 3895

1樓:

首先: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 和上面的結果一致

2樓:匿名使用者

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

#include

#include

void main()

3樓:匿名使用者

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

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

4樓:匿名使用者

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

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

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

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

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

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

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

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

5樓:匿名使用者

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

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

6樓:匿名使用者

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

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

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

7樓:匿名使用者

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

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

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

8樓:須憶象駿

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

c語言指標變數方面的題,求大神解答?

9樓:水焱新火

先看圖,這就很好理解了,遇到這種時候,能上網,就自己寫了看看結果,倒推

p得到的是a的地址,&p 就是p的地址,*p 是p儲存的地址指向的資料,就是x的資料,意義上*p就是x,第二題就很好理解了,&*p 就是&x了

反過來說第一題,&p是p的地址,*&p就是 系統給p分配到的地址指向的資料,就是p本身的儲存,也就是賦值的&x,就是x的地址,答案裡面沒有&x,但是有p

實際執行時候取到的值是一樣的,只是考個邏輯

10樓:匿名使用者

以上c語言選擇題的答案為:

19 a

21 d

11樓:聽不清啊

兩個題目的答案為:

21)d

19)a

c語言指標變數方面的填空題,求大神解答?

12樓:自我程式設計

1,scanf("%d",&a[0][0]);

2,scanf("%d",p+1);

3,scanf("%d",&q[0][2]);

4,scanf("%d",*(q+1));

5,scanf("%d",&q[1][1]);

6,scanf("%d",&(**(q+1))+2);

c語言有關函式指標的一個題目,看不懂,求解答

13樓:曉期投資

這個 怎麼看不懂啊,

連結串列中插入節點 或者是**不懂

14樓:匿名使用者

typedef struct node

node;

typedef struct node *linklist; /* 定義linklist */

status listinsert(linklist *l,int i,elemtype e)

if (!p || j > i)

return error;   /* 第i個元素不存在 */

s = (linklist)malloc(sizeof(node));  /*  生成新結點(c語言標準函式) */

s->data = e;

s->next = p->next;      /* 將p的後繼結點賦值給s的後繼  */

p->next = s;          /* 將s賦值給p的後繼 */

return ok;

}//主要**如下。

關於c語言中指標const的問題(簡單的。。),求大佬解答,謝謝!

15樓:匿名使用者

const加在*p前面只是不能通過*p修改指向的a的值,a本身又沒加const,當然可以改。

16樓:問題男孩

沒毛病啊,因為你int const*p=&a,所以*p裡面只能是a的地址啊,不可改變。也不能在對*p賦值了,或者改變其內容。a又沒有被const,所以它當然能隨意賦值了。

c語言程式程式設計問題,標題是指標的應用,求解答

17樓:顯示卡色彩校正器

正整bai數用不著指du

針變數嘛zhi

i am a student:

#include

int main()

, *p, i;

daoscanf("%[^\n]s", s);

p=s;

for(i=0; p[i]!='\0'; i++);

printf("%d", i);

return 0;}

18樓:金色潛鳥

輸入正整數,可以當成copy

輸入一個字串,輸出最高位,就是輸出讀入的第一個字元。

輸入 i am a student,可以一個字元一個字元判斷和計數,遇到字串結束符為止。

完整程式如下:

#include

int main()

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

1.能通過指標p改變a裡面的值,前提是a不是常量且指標p不是指向常量的指標 只讀型指標 舉例 a int a 1,p a 此時a等於100了 p 100 b int a 1 const int p a 不能通過p改變a的值,因為p是隻讀型指標 只讀型指標可以指向變數,但不能通過指標修改它指向的變數的...

c語言中指標中的是什麼意思,C語言中,指標中的 是什麼意思

在宣告int pirand中 表示這個變數是int型別的指標 在宣告之外 可以理解成一個運算子 或者一個函式 和 是一對逆運算 的意思是讀一個變數的地址 比如你宣告瞭int a a是a的地址可能是xx1001之類的可以在除錯裡看一下 的意思是讀一個地址指向的內容 pirand pirand rand...

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

上面程式的功能是算出你輸入同學的平均分,同時輸出低於平均分的分數 但是你這個程式版是有問權題的沒有退出的條件,只能輸入score為負數才能退出 分別為56,78,89,65,58,34,45,9 則輸出結果如下圖 c語言問題求解答 5 1 include 2 int main 3 21 22 23 ...