1樓:
int * a[10] ,是指標陣列,每個a[i]都是指向 int型的指標
比如 int abc;
a[0]=&abc;
int (*a)[10],是陣列指標,a 是指向一個有10個元素的int型陣列
比如int abc[10];
a=abc;
2樓:匿名使用者
int *a[10] a是陣列,a裡存放的是10個int型指標
int (*a)[10] a是指標,指向一個陣列,此陣列有10個int型元素
3樓:手機使用者
在c語言程式中,只能給指標變數賦 地址 值 和 指標 值。
例如int i = 0;int *p;p = &i; /* 賦值地址 */int *q;q = p; /* 指標賦值 */
一道c語言的指標問題
4樓:匿名使用者
a) char s[5]="abcde" bai//字串這樣賦值時,末尾有一個du預設的zhi串尾符\0,所以字串"abcde"的實際長度是dao
回6,s[5]是儲存不下的,溢位答
了b) char *s; gets(s);
//char *s只是宣告瞭一個指標,並沒有分配儲存空間,所以用gets(s);給s賦值時,會導致野指標訪問異常
//scanf使用%s控制符讀取字串時,要求傳遞的是字元陣列的首地址,也就是s,不是&s
一道關於c語言的指標問題
5樓:匿名使用者
下面解釋一下為什麼選b
p是a[0]的指標當然*p=a[0]了也就是1那麼為什麼輸出*(p+3)時結果是版6而不是權4呢?
是因為*(p+3)+=2也就是:
*(p+3)=*(p+3)+2
在執行上面賦值表示式時剛開始時*(p+3)的值是4但是*(p+3)=*(p+3)+2也就是*(p+3)=4+2這一步是把*(p+3)看做一個變數對其進行從新賦值,就得結果6了。
6樓:匿名使用者
p=a:這裡
抄將p指向a的首地址,也bai就是a[0]的地址所以p+3也就是指向相du對於a偏移3個單位的成員,zhi也就是a[3]的地dao址了,
所以*(p+3)也就是a[3](就是陣列中的4),*(p+3)+=2,就是將a[3]的值再加上2,所以就由4變為6,所以最後輸出*p,*(p+3)的值就變為:1,6
7樓:翱翔之冠軍
﹡p是指向第一個
﹡(p+3)等於﹡(p+3)+=2
所以分別指向第一和第六
c語言指標的賦值問題
8樓:大野瘦子
指標在用要注意初始化,例如:
int *p;
p為指標,地址是未知的,如果直接賦值
*p=a;這樣編譯可以通過,但是會產生警告,p的地址是隨機分配的,這樣對未知的地址賦值很危險,可能會覆蓋掉某些重要資料,所以避免這種危險,在定義指標時注意初始化,也就是賦值。
可以int *p=&a;
或者int *p;
p=&a;
然後再對p進行操作
有錯。注意大小寫,還有
int a=9;
int *p;
p=&a;//這個是指標指向a
*p=8;
這樣就對了。
指標的賦值
int *p;
int a;
int b[1];
p = &a;
p = b;
指標的賦值,「=」的左運算元能夠是*p,也能夠是p。
當「=」的左運算元是*p時,改變的是p所指向的地址存放的資料;
當「=」的左運算元是p時,改變的是p所指向的地址。
陣列的變數名b表示該陣列的首地址,因此p=b;也是正確的
同型別的指標賦值:
int val1 = 18,val2 = 19;
int *p1,*p2;
p1 = &val1;
p2 = &val2;
p1 = p2; //注意啦,p1指向了val2,而沒有指向val1
備註:字串與指標的初始化和賦值
初始化:
char *cp = "abcdefg"; //這個初始化過程,是將指標cp指向字串的首地址,而並非傳遞字串的值。由於,在c語言裡面,沒有總體處理一個字串的機制
賦值:cp = "abcdefg";
*cp=」abcdefg」 ;//錯誤!字串常量傳遞的是它的首地址,不能夠通過*cp改動該字串的值,由於該字串為常量,而它僅僅是簡單的將指標指向該字串常量。
9樓:林聲飄揚
有錯注意:用指標變數前,必須對指標變數賦值如:int i, *p1;
p1=&i;
再如:int a, b;
int *p1, *p2;
*p1=10; *p2=100;
但指標變數未賦值,即指標指向未知地址,這樣是錯誤的因此:絕對不能對未賦值的指標變數作「指向」運算。
int a=9,b;
int *p=&b;//必須加上這一句
*p=a;
*p=8;
這樣就不會產生錯誤
10樓:匿名使用者
注意大小寫!還有
int a=9;
int *p;
p=&a;//這個是指標指向a
*p=8;
這樣就對了。
11樓:七先生是遊戲鬼才
這個還是比較複雜的,你可以學習一下
12樓:匿名使用者
p=&a//把a的地址給指標p
13樓:匿名使用者
語法上沒錯,但可能出現警告,破壞程式其他資料
14樓:渾濃強浩然
p就是一個指標,他指向一個地址,而&p就是p剛才所指向的具體地址,*p是p指向地址裡面的東西。也就是值。*p=&a的意思是把a的地址給了*p,這樣的話p就指向
(指向a的地址)的地址。對指標賦值必須是int*p=null;或者int
*p;p=null。
一道c語言中的指標問題 ...
15樓:匿名使用者
#include
void main()
16樓:匿名使用者
第一個空填char* str1, *str2;
後面如樓上所說。
17樓:匿名使用者
p1++;
*(p1++)=*(p2++);
一道c語言指標問題
18樓:行者無懼
#include
float max(float a,float b)
main()
19樓:匿名使用者
你這能編譯過嗎? (*p)() ;後面的形參列表表示指標變數指向的函式所帶的引數列表
修改為float (*p)(float,float);試試
問一道C語言程式設計的問題,看下圖,問一道C語言程式設計的問題,看下圖
按你的提問,每天都吃一半多兩個,第6天剩一個。程式按 中的程式照貓畫虎即可。計算結果,第一天摘了156個桃子,而不是100個。include int main printf total d n x1 return 0 用數學方法按天推算了一下,是156個,無誤。include stdio.h int...
求教!一道C語言題目,求教一道C語言的題目!
你主函式裡m肯定還是1,func函式中的靜態變數應該是8了吧。你檢視變數值的位置是什麼樣的,如果在主函式裡檢視肯定是主函式中的m,即為1,因為發生作用域覆蓋了。你是第二次進入func後設定斷點,檢視m數值的可定為8。由程式執行結果為8 此時i 3,m 3 1 4,因此返回值為8 17 此時i 3 8...
誰能幫我解決一道C語言題目C語言一道題目,誰能幫我解得
include include include include define eps 1e 6 用於控制商的精確度 main else printf 回答錯誤 n break case 2 for i 1 i 10 i while c 0 printf d.d d n i,a,b scanf d d...