Ⅰ 編程c語言的size函數是怎麼取值的
基本思路就是先將為0的元素移動到數組的最後面,然後再利用冒泡法對非零的數值進行排序。下面是代碼:#includevoid Afunc(int *p,int size);void Afunc(int *p,int size){/* 把零元素移動到數組的最後 */ int i, j, temp, k;i = 0; j = size - 1; do{if(p[i] == 0){temp = p[i];p[i] = p[j];p[j] = temp;j--;}elsei++;}while(i p[k + 1]) { temp = p[k]; p[k] = p[k + 1]; p[k + 1] = temp; } }}int main(void){int a[10] = {12,0,31,14,5,0,0,17,0,-12};Afunc(a,10);int i;for(i = 0; i < 10; i++)printf("%d ",a[i]);printf("\n");}
Ⅱ C語言sizeof函數如何使用
C語言中的sizeof是一個很有意思的關鍵字,經常有人用不對,搞不清不是什麼。我以前也有用錯的時候,現在寫一寫,也算是提醒一下自己吧。反正現在來看,還在搞sizeof是什麼意思,怎麼用正確,還是有點搞笑,都經常用的東西,沒有理解透徹,就差的太遠了。
一 sizeof是什麼
sizeof是C語言的一種單目操作符,如C語言的其他操作符++、--等,sizeof操作符以位元組形式給出了其操作數的存儲大小。操作數可以是一個表達式或括在括弧內的類型名。這個操作數不好理解對吧?後面慢慢看就明白了。sizeof的返回值是size_t,在64位機器下,被定義為long unsigned int。
二 sizeof如何使用
1、用於數據類型
使用形式: sizeof(type)。其中type如int 、double等。 例如sizeof(int)、sizeof(char*)、sizeof(double)。這個時候sizeof後面的類型必須用括弧()包起來,不包起來是錯誤的,通過不了編譯。其中sizeof(void*)在64位下是8,而sizeof(void)是1。其實,在C語言中sizeof(函數),
如sizeof(main),結果也是1。但是在C++中,sizeof(void)和sizeof(函數)都是非法的,通過不了編譯,後面C++就不說了,現在講C嘛。其實sizeof(函數),sizeof(void)雖然是1,但是是不正確的使用方式。
2、用於變數
使用形式: sizeof(var)或sizeof var。當操作基本數據類型的時候,在我64位電腦的結果如下
作用是:計算常量、變數、數據類型 在內存中佔用的位元組數
三、用sizeof計算常量在內存中佔用的位元組數
sizeof(1) 計算常量 1 在內存中佔用的位元組數 4
1 默認的事一個10進制的整數(int) 4
sizeof(2.3f); 計算 float類型的常量在內存中佔用的位元組數 4
sizeof(2.3); 計算 double 類型的常量在內存中佔用的位元組數 8
sizeof('a'); 計算 'a' 字元常量 在內存中佔用的位元組數 1 4?
Ⅲ c語言sizeof函數
(1)sizeof不是函數,它只是一個操作符(operator)。
(2)sizeof的作用是返回一個對象或者類型所佔的內存位元組數,它的返回值的類型是size_t類型,而size_t是在頭文件stddef.h中定義的。size_t 這是一個依賴於編譯系統的值,一般定義為
「typedef unsigned int size_t;」,也就是無符號整型。
(3)sizeof有三種語法形式,如下:
1) sizeof( object ); // sizeof( 對象 );
2) sizeof( type_name ); // sizeof( 類型 );
3) sizeof object; // sizeof 對象;
所以,
inti;
sizeof(i);//ok
sizeofi;//ok
sizeof(int);//ok
sizeofint;//error
既然寫法3可以用寫法1代替,為求形式統一以及減少我們大腦的負擔,只用寫法1就行了!
(4)說回你的提問,既然sizeof的返回值是unsigned int型,那麼很明顯可以用 %u 、%o 、%x 來輸出,這三個都是無符號整型的格式符,分別對應十進制、八進制、十六進制。
(5)而%zd是修飾符z與有符號十進制整型格式符%d組合而成的格式符,表示按 size_t 的類型來輸出。那麼,肯定,%zd 可以用來輸出 sizeof 的返回值。
(6)而%d是按有符號整型來輸出數值,所以與unsigned int的表示範圍是不一樣的,如果 sizeof 的返回值超出了 %d 的表示範圍的話,是會輸出一個不正確的數值的。
總結一下:sizeof 的返回值可以用 %u 、 %o 、 %x 、 %zd 來正常輸出,而用 %d 的時候需要注意返回值是否會超出 %d (即 signed int 型)的表示範圍。
另外,有的操作系統或編譯器里,size_t 的類型可能是 long unsigned int 型,所以 輸出 sizeof 的返回值的時候, 應該用 %lu 等。
以上,如有幫助,煩請點採納,謝謝!
Ⅳ 在C語言中size是什麼函數
sizeof是C語言的一種單目操作符,就像C語言的其他操作符++、--等。
它並不是函數。
sizeof操作符以位元組形式給出了其操作數的存儲大小。
操作數可以是一個表達式或括在括弧內的類型名,如double,int等。
如sizeof(double)的值應該是8,即double型數據在內存中佔8個位元組。
運算符:sizeof
優先順序:2
含義:長度運算符
(單目運算符)
結合方向:自右至左
Ⅳ C語言,這個程序里的size是什麼意思,求解釋
#include<stdio.h>
intmain()
{
intnum=10;//int數據類型32位編輯器展4個位元組
inta=sizeof(num);//sizeof就是用來判斷變數占幾個位元組
printf("a=%i",a);//a=4
return0;
}
Ⅵ C語言sizeof
當參數為數組時, 實際傳參會按指針處理.
即 這里的int arr[10]等效於int *arr
sizeof(arr)也就是sizeof(int *)
對於32位系統, sizeof(int*)=4
於是選A.
Ⅶ C++ 關於size()和sizeof()
sizeof(a)返回的是對象佔用內存的位元組數,而a.size()是string類定義的一個返回字元串大小的函數,兩個是完全不一樣的概念。
明確兩者的概念和作用:
1、size()函數:
c++中,在獲取字元串長度時,size()函數與length()函數作用相同。 除此之外,size()函數還可以獲取vector類型的長度。
例如:vector < int> num(15,2) ,則:num.size() = 15。
2、sizeof():
sizeof()運算符用來求對象所佔內存空間的大小。
假設以下對象,分別使用sizeof函數:
(7)c語言size函數擴展閱讀
sizeof(...)是運算符,其值在編譯時即計算好了,參數可以是數組、指針、類型、對象、函數等。它的功能是:獲得保證能容納實現所建立的最大對象的位元組大小。由於在編譯時計算,因此sizeof不能用來返回動態分配的內存空間的大小。
size是由string vector 和bitset定義的函數,分別用於返回字元個數,元素個數和二進制位的數。string和vector的size成員函數用以返回size_type類型的值。bitset返回size_t的值。
用法,例如string
string st("fddddddddgs");
cout<<"the size of"<<st<<"is"<<st.size();
列印st中的字元個數
size其實就是計算不同類型容器中的元素個數的。