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 ...