⑴ c語言中指針的長度!
記住32位下的指針 都是4個位元組可以簡單的這么理解:一個基本的數據類型(包括結構體等自定義類型)加上「*」號就構成了一個指針類型的模子。這個模子的大小是一定的,與「*」號前面的數據類型無關。「*」號前面的數據類型只是說明指針所指向的內存里存儲的數據類型。所以,在 32位系統下,不管什麼樣的指針類型,其大小都為 4byte。
⑵ C語言指針變數大小的問題
對於這個你只要記住一句秘訣就好,指針的大小僅僅取決指針本身的大小,不取決於指針指向的大小。 還有就是還有一個虛擬內存和物理地址的關系,有MMU映射,8086里有硬體完成一個地址偏移的過程,物理地址 = 基址*16 + 變址。
⑶ c語言中,運用指針,從鍵盤輸入10個整數,求出其中最小值
#include<stdio.h>
intmain()
{inti,min_i=0,a[10],*p=a;
for(i=0;i<10;i++)
{scanf("%d",(p+i));
if(*(p+i)<*(p+min_i))min_i=i;
}
printf("最小值=%d ",*(p+min_i));
return0;
}
⑷ C語言指針查找最大最小值
#include<stdio.h>
intmain()
{
inta[10],i,n,j;
int*q;
q=&a[0];
for(i=0;i<10;i++)
{
printf("請輸出1個整數:");
scanf("%d",&a[i]);
}
for(j=0;j<9;j++)//這兩個for循環的作用是將10個數從大到小排序
{
for(i=j+1;i<10;i++)
{
if(*(q+j)<*(q+i))
{
n=*(q+j);
*(q+j)=*(q+i);
*(q+i)=n;
}
}
}
printf("Themax=%d,Themin=%d ",*q,*(q+9));//輸出第一個和最後一個數
}
⑸ C語言指針輸出最大數和最小數
可以的。因為在之前的語句:max=min=*x;裡面已經將第一個元素存儲在了變數max ,min 中,如果你用p=x,只不過是把第一個元素和自己比較一下大小而已,當然for語句中的2個if語句都不會執行(應為自己和自己相等啊),不影響任何結果,for接著執行下一次循環,從第二個元素開始比較,接著就是你上述程序的步驟了。
PS:希望對你有用。
⑹ 關於c語言指針的一些問題。
1、不是說系統64位它就是8位元組,而是受限於地址匯流排的位元組寬度,你的地址匯流排是64位的即指針就是8位元組的,但是現在的64位個人pc多半是x86-64能兼容32位的應用程序。
2、有,你64 位的機器,它的虛擬內存可以到8TB,如果你在64位機上裝個32位的windows你會發現,我的個去……慢的要死(我犯過這樣的低級錯誤)
3、指針保存的是地址,比如32位機上,每個地址都是32位的,所以它始終都是4位元組,沒有最大或者最小。
觀樓主英俊瀟灑、風流倜儻,必當世之豪傑,誠邀樓主加入0x30網路貼吧,共商義舉,成千秋霸業。
⑺ C語言題目 指針之最大最小值 G題
imax=imin=a[0];
for(i=1;i<N;++i)
{
if(a[i]<imin)imin=a[i];
if(a[i]>imax)imax=a[i];
}
⑻ C語言指針的地址范圍是多少
C語言的指針地址范圍是4位元組空間,即從地址0x00000000~地址0xFFFFFFFF。但其中有些欄位是系統保護的或所使用的硬體平台根本就不存在,所以用戶指針並不能完全使用這個空間。不過用戶不必擔心,只要按規范使用指針,系統都會自動正確安排。
⑼ C語言中一個指針佔用多少位元組
一個指針變數在內存中占兩個位元組(small模式編譯),一個指針變數在內存中佔四個位元組(32位機器上),一般都是32位機器的,所以四個位元組咯。
指針即為地址,指針幾個位元組跟語言無關,而是跟系統的定址能力有關。
指針是一個特殊的變數,它裡面存儲的數值被解釋成為內存里的一個地址。要搞清一個指針需要搞清指針的四方面的內容:指針的類型、指針所指向的類型、指針的值或者叫指針所指向的內存區、指針本身所佔據的內存區。
(9)c語言指針最小多少擴展閱讀
1、指針的類型
從語法的角度看,你只要把指針聲明語句里的指針名字去掉,剩下的部分就是這個指針的類型。這是指針本身所具有的類型。讓我們看看例一中各個指針的類型:
(1)int*ptr;//指針的類型是int*
(2)char*ptr;//指針的類型是char*
(3)int**ptr;//指針的類型是int**
(4)int(*ptr);//指針的類型是int(*)
(5)int*(*ptr);//指針的類型是int*(*)
2、指針所指向的類型
當你通過指針來訪問指針所指向的內存區時,指針所指向的類型決定了編譯器將把那片內存區里的內容當做什麼來看待。
從語法上看,你只須把指針聲明語句中的指針名字和名字左邊的指針聲明符*去掉,剩下的就是指針所指向的類型。例如:
(1)int*ptr; //指針所指向的類型是int
(2)char*ptr; //指針所指向的的類型是char
(3)int**ptr; //指針所指向的的類型是int*
(4)int(*ptr); //指針所指向的的類型是int()
(5)int*(*ptr); //指針所指向的的類型是int*()
⑽ 在C語言中一個指針佔用多少位元組。
指針即為地址,指針幾個位元組跟語言無關,而是跟系統的定址能力有關。譬如以前是16為地址,指針即為2個位元組,現在一般是32位系統,所以是4個位元組,以後64位,則就為8個位元組。
(10)c語言指針最小多少擴展閱讀:
1)指針的含義
指針不同於一般變數,存的是變數的地址,在同一架構下地址長度都是相同的(cpu的最大定址內存空間),所以不同類型的指針長度都一樣比如說一個char1位元組,可以存在0x0,也可以位於0xFFFFFFFF,比如你的32位系統。
2)指針的范圍
指針長度為4,在64位操作系統下那麼就都是8了,而和char佔用1位元組還是100位元組無關,指針的范圍只和機器字和系統有關。
3)變化的范圍
如果你輸出的是444,說明指針長度為4位元組可以記錄的地址范圍是0x00000000~0xFFFFFFFF,這個范圍才是指針變數的值。
4)指針的介紹
指針是一個特殊的變數,它裡面存儲的數值被解釋成為內存里的一個地址。要搞清一個指針需要搞清指針的四方面的內容:指針的類型、指針所指向的類型、指針的值或者叫指針所指向的內存區、指針本身所佔據的內存區。