本文目錄一覽:
- 1、可以不學數據結構直接學哈希表嗎?C語言實現
- 2、c語言中EOF的用法
- 3、c能不能動態宣告陣列變數
- 4、股票行情軟體中的指標 是什麼語言?
- 5、C語言 關於POINTER(指針)的問題, 急!!!!
- 6、C語言中如何讀取一個已知地址中儲存的變數
可以不學數據結構直接學哈希表嗎?C語言實現
可以的,哈希表那部分和圖,樹聯繫不是很大。直接看是完全可以的,而且哈希這部分也比較容易些。
c語言中EOF的用法
c語言中EOF的用法 1、EOF是end of file的縮寫,表示”文字流”(stream)的結尾。這裡的”文字流”,可以是檔案(file),也可以是標準輸入(stdin)。EOF不是特殊字元,而是一個定義在標頭檔案stdio.h的常量,一般等於-1:#define EOF (-1)。除了表示檔案結尾,EOF還可以表示標準輸入的結尾。但是,標準輸入與檔案不一樣,無法事先知道輸入的長度,必須手動輸入一個字元,表示到達EOF。
2、常式:
#include stdio.hint main(){char c;while((c = getchar()) != EOF){putchar(c);}return 0;}
說明:在Windows上按CTRL+Z鍵,表示EOF。
注意:EOF雖然是檔案結束符,但並不是在任何情況下輸入Ctrl+D(Windows下Ctrl+Z)都能夠實現檔案結束的功能,只有在下列的條件下,才作為檔案結束符。
(1)遇到getcahr函式執行時,要輸入第一個字元時就直接輸入Ctrl+D,就可以跳出getchar(),去執行程式的其他部分;
(2)在前面輸入的字元為換行符時,接著輸入Ctrl+D;
(3)在前面有字元輸入且不為換行符時,要連著輸入兩次Ctrl+D,這時第二次輸入的Ctrl+D起到檔案結束符的功能。
C語言中~的用法?
是條件運運算元,相當於 if() else 結構。
1、c語言
C語言是一門通用計算機程式語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編
譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。
2、具體介紹
儘管C語言提供了許多低階處理的功能,但仍然保持著良好跨平台的特性,以一個標準規格寫出
的C語言程式可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱MCU)以
及超級電腦等作業平台。二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由
美國國家標準局為C語言制定了一套完整的國際標準語法,稱為ANSI C,作為C語言最初的標
准。
3、編譯器
GCC,GNU組織開發的開源免費的編譯器
MinGW,Windows作業系統下的GCC
Clang,開源的BSD協議的基於LLVM的編譯器
Visual C++ :: cl.exe,Microsoft VC++自帶的編譯器
C語言語言中FOR的用法
for 是一個迴圈語句,和while是類似的,for一般的用法有:
for(i=0;i10;i++)
{
printf(“hello world”);
}
這裡就是輸出10次hello world,為什麼是10次呢?因為首先i=0,第一次先判斷i10是否成立,成立的話,就執行 printf(“hello world”);,然後回過來i++,再判斷i10是否成立,成立的話再執行{ }內的程式,最後當i=9時,再回過來i++,i變為10,再判斷i10已經不成立了,所以就結束for語句,i從0~9一共是10次,所以輸出10次hello world。while的話也類似的道理。
for也可以這樣用:for(int i=0;i10;i++) ,這裡的i的周期(或者生命)只存在與這個for語句內,當for語句結束後,這個i就不存在了,是個臨時變數,其他的話用法基本上就是這樣。
C語言中,typedef的用法
定義型別,例如:
typedef long time_t;
之後在程式中宣告變數時,
time_t a;
就相當於
long a;
再如
有
typedef enum{yes,no} yes_no;
之後
yes_no a;
相當於
enum{yes,no} a;
C語言中new的用法?
C語言沒有new關鍵詞,應該是C++裡面編譯設計增加了new new就是動態分配一個堆空間. int *p = new int;使用指標指向新分配的連續空間 也可以是.int *p = new int[10];陣列
C語言中rand的用法
rand
語法:
#include stdlib.h int rand( void );
功能: 函式返回一個在零到RAND_MAX 之間的偽隨機整數。例如: srand( time(NULL) ); for( i = 0; i 10; i++ ) printf( “Random number #%d: %d\n”, i, rand() );
在vs中RAND_MAX的預設值是0x7fff
具體可以
#includestdlib.h
#includeiostream.h
void main()
{
coutRAND_MAXendl;
}
來檢視大小。
c語言中 free的用法~
malloc用來動態申請記憶體空間,而free用來釋放malloc申請的空間。如:
struct
{
int a;
int b;
}node;
main()
{
node *lnode;
lnode-a=33;
lnode-b=99;
lnode=(node*)malloc(sizeof(node));
printf(“a=%d b=%d”,lnode-a,lnode-b);
free(lnode);
return 0;
}
C語言中_at_的用法
at+ 讀寫開啟一個文字檔案,允許讀或在文字末追加資料。
在vector里用,vector.at(n)表示vector里的下標為n的值。
C語言是一門通用計算機程式語言,應用廣泛。
C語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。
C語言中messagebox的用法
#include windows.h
int main(void)
{
MessageBox(NULL, “你好(內容)”, “對話方塊(標題)”, MB_OK);
return 0;
}end main
C語言中char的用法
char是計算機程式語言(c、c++、java、VFP等)中可容納單個字元的一種基本資料型別。
char 是一個數據型別,作用是定義字元型變數(單個或是字串)。
比方int 是整形資料,int a = 3;這裡int 是型別, a 是整型變數,3是賦值;
char s = ‘A’; char是字元型別,s是字元型變數,A是賦值給變數s;
char s[] = “c program”; char是字元型別,s[]是字元型陣列,”c program”是賦給陣列的值。
c能不能動態宣告陣列變數
c能不能動態宣告陣列變數
C語言中可以用變數定義陣列的個數。 原因如下: 由於陣列在定義的時候,系統就會分配對應的儲存單元,如果用變數,系統就不知道該分配多少位元組的儲存單元,就會報錯。 但是可以用巨集定義定義的常量定義陣列個數,因為巨集定義是在編譯階段進行字元.
android的gridview能不能動態改變行列顯示數?
不知道行不行,你可以試試下面的方法,,如果這個方法不行 那應該就不行
setNumColumns(int numColumns) 設定顯示的列數 (有可能還需要呼叫一下Adapter的NotifyDataSetChanged)
要控制行數 只需要控制Adapter的 getCount回撥的返回值就行了 然後notify重新整理下!
C++為什麼不能動態建立陣列大小
能的,用new ,
例:int a ;
cina;
int *s = new int[a];
new和delete運運算元用於動態分配和撤銷記憶體的運運算元new用法:
1. 開闢單變數地址空間
1)new int; 開闢一個存放陣列的儲存空間,返回一個指向該儲存空間的地址.int *a = new int 即為將一個int型別的地址賦值給整型指標a.
2)int *a = new int[5] 作用同上,但是同時將整數賦值為5
2. 開闢陣列空間
一維: int *a = new int[100];開闢一個大小為100的整型陣列空間
二維: int **a = new int[5][6]
三維及其以上:依此類推.
一般用法: new 型別 [初值]delete用法:
1. int *a = new int; delete a; 釋放單個int的空間
2.int *a = new int[5]; delete [] a; 釋放int陣列空間
要訪問new所開闢的結構體空間,無法直接通過變數名進行,只能通過賦值的指標進行訪問.
用new和delete可以動態開闢,撤銷地址空間.在程式設計序時,若用完一個變數(一般是暫時儲存的陣列),下次需要再用,但卻又想省去重新初始化的功夫,可以在每次開始使用時開闢一個空間,在用完後撤銷它.
unity能不能動態獲取元件(指令碼)啊?
可以的,getpnent就行
請問能不能宣告 int[0]陣列?
這不是語法bug或者編譯器的錯誤,
c++中可以宣告元素個數為零的陣列是為了能夠宣告個數為變數的陣列.
如int* p = new int[x];
x是無符號的int.
當然x為0的時候是不可以給它賦值的,執行時會掛掉
x的值是在執行時確定的,所以編譯的時候編譯器當然不會認為是一個錯誤
MFC如何手動為控制元件建立成員變數,能不能動態建立?
所謂手動,就是在.h和.cpp檔案中增加那幾行程式碼。
動態建立是沒有意義的,因為控制元件關聯變數時為了程式碼操作省事兒,不需要變數關聯也能完成所有的操作。
而實際上控制元件關聯變數,就是一組CDataExchange資料互動,通過動態完成,你需要自己處理資料互動,比直接使用控制元件指標完成要複雜的多。
Keil C51 位變數能不能定義陣列?
試試唄
我的結論是不行
會報錯 error C168: array of bit
手冊描述:An array may not have type bit as its basic type. This limitation is imposed by the architecture of the 8051.
c++中 用extern宣告外部變數時能不能給變數賦初值
肯定不可以的啊,宣告的目的是告訴編譯器變數或函式的型別,暗示在某處會有他的正確定義。
準確說起來,變數與函式是相同的,都分為宣告和定義,即在前面加上extern,只不過出於簡單的目的,函式的宣告省略了extern關鍵字,函式不能再宣告(除非是定義)處定義函式體。
我們通常的變數宣告主要是宣告變數的型別(編譯器認為是分配記憶體的方式):int variable;
這已經有足夠的資訊令編譯器(在宣告的地方)分配記憶體。
希望可以幫到你
PHP 中如何宣告靜態陣列變數
static $test = array();
c 怎麼動態宣告二維陣列
#include iostream
using namespace std;
int main()
{
int **p;
int m = 10, n =100;
p = new int *[m];
for (int i = 0; i m; i++)
{
p[i] = new int[n];
}
return 0;
}
股票行情軟體中的指標 是什麼語言?
股票行情軟體是基於Java計算機編程語言上的,也就是K-JAVA即J2ME軟體平台
,專門用於嵌入式設備的JAVA軟體。
軟體開發商以K-Java編程語言為手機開發應用程序,可以提供,遊戲,個人信息處理,股票,電子地圖等服務程序。 摩托羅拉率先在手機上預裝了K-JAVA
K-JAVA的平台開放性:JAVA語言可以跨平台運行,軟體開發商可以很容易的開發應用程序。
K-JAVA功能可以做移動商務、移動辦公 、信息點播、股票、外匯、地址簿、日曆、文件管理 、天氣預報等;
Java包含了一種計算機編程語言和一個平台,隨著K-Java技術的不斷完善與發展,發展商們將對具有K-Java功能的手機用戶提供更還更全面的服務。如: 互動遊戲、互動新聞 、增強手機連接到無線網路後進行數據交換的安全性、 載以Java語言寫成的內容、遙控家用電器。
Java有許多值得稱道的優點,如簡單、面向對象、分散式、解釋性、可靠、安全、結構中立性、可移植性、高性能、多線程、動態性等。
C語言 關於POINTER(指針)的問題, 急!!!!
C 的 pointer (指標, 另一常譯為指位器)一般是被認為 C 語言中最具威力的工具及
最難以學習的, 事實上 pointer 並不困難.
第一個範例:
/* ====================
pointer – 1
==================== */
#include stdio.h
int main()
{
char *s_pointer = 「Hello」;
char s[] = 「World」;
printf(「%s\n」, s_pointer );
printf(「%s」, s );
return 0;
}
程式執行結果:
Hello
World
先解釋一下這一行:
char *s_pointer = 「Hello」;
首先編譯器會預留一塊記憶空間存放 Hello, 再把這個空間的 address (也就是 『H』
字元的位址) 設定給 s_pointer.
有點困惑嗎? C 的 pointer 與 array 很類似, 基本上 array 只是一塊連續的記憶空間,
一個變數存放著這個空間的 address (位址), 而 pointer 也只是一個變數存放著一個
address. 若還是不明白, 在以後我們會以更多的範例來說明 pointer 的觀念與使用
以及 pointer 與 array 的關係.
底下的例子:
/* ====================
pointer – 2
==================== */
#include stdio.h
int main()
{
char *s_pointer;
char str[] = 「Hello World!」;
s_pointer = str;
printf(「%s\n」, s_pointer );
return 0;
}
執行結果:
Hello World!
上面程式中, 所做的事情不是 string copy, 而是將 pointer 所指的 address 設定(assign)
為 str 所指的值, 而此時有 str 及 pointer 指向 「Hello World!」.
再看底下的例子:
/* ====================
pointer – 3
==================== */
#include stdio.h
int main()
{
char *s_pointer;
char str[] = 「Hello World!」;
s_pointer = str;
s_pointer[0] = 『h』; /* 『H』 轉 『h』 */
printf(「%s\n」, str );
return 0;
}
執行結果:
hello World!
前面提過, pointer 與 array 其實只是一個變數存放著一個 address, 在前面的 array 章節中
學到的 array 操作自然可以應用(apply)在 pointer 上, 我們把 s_pointer 所指的
address (位址) 上的第一個 element 改成 『h』. 又因為 str 所指的 address 與 s_pointer 一樣,
所以 printf 輸出 str 為 「hello World!」.
底下的例子:
/* ====================
pointer – 4
==================== */
#include stdio.h
int main()
{
char *s_pointer;
char str[] = 「Hello World!」;
s_pointer = str;
s_pointer = s_pointer + 1; /* 也可寫成 s_pointer++ */
printf(「%s\n」, str );
printf(「%s\n」, s_pointer );
return 0;
}
執行結果:
Hello World!
ello World!
既然我們可以指定 pointer 的 address (位址), 自然就可以將現在所指的 address
往前或往後減少或累加, 上例中我們是累加:
s_pointer = s_pointer + 1;
這一行程式會將 s_pointer 所指的 address 加一, 因此原本 s_pointer 是指向 『H』,
加一之後變成 『e』 開始.
請參考下圖.
str(指向 H )
H
e
l
l
o
W
o
r
l
d
!
NULL
s_pointer (指向 H)
s_pointer = s_pointer + 1 (指向 e)
/* ====================
pointer – 5
==================== */
#include stdio.h
int main()
{
char *s_pointer = 「Hello」;
char ch1, ch2;
ch1 = *s_pointer;
ch2 = s_pointer[0];
printf(「%c, %c」, ch1, ch2 );
return 0;
}
執行結果:
H, H
程式示範如何以 pointer 運算取出目前 pointer 所指的 address 上的資料,
我們已知 s_pointer 所指的位址及其上面存放的資料, 以 『*』 pointer operator
(指標運算元) 可取出所存放的資料, 程式之中比較了等¤的 array 操作,
在程式開發上, 個人是偏愛使用 array operator, 但有些 programmer 認為
使用 pointer operator 編譯器產生的 code 較 array operator 快.
以下範例是用 pointer 的間接運運算元的例子, 當然也可以用 array operator 做到:
/* ====================
pointer 6
==================== */
#include stdio.h
void main()
{
char *str = “Eric”;
printf( “%c”, *(str+0) ); /* 也可寫 printf(「%c」,str[0] ); */
printf( “%c”, *(str+1) ); /* 也可寫 printf(「%c」,str[1] ); */
printf( “%c”, *(str+2) ); /* 也可寫 printf(「%c」,str[2] ); */
printf( “%c”, *(str+3) ); /* 也可寫 printf(「%c」,str[3] ); */
}
程式執行結果:
Eric
看完以上的例子是否更清楚 pointer 的使用, 及 pointer 與 array 之間的關係?
在一個比較大的軟體開發計劃中, 常常 要動態向系統要求記憶體, 以下是一個範例:
/* ================
memory allocation/free 1
================ */
#include stdio.h
#include stdlib.h
int main()
{
char *str;
char s[] = 「Hello World!」;
int length;
length = strlen( s ) + 1; /* 求得 s 長度, 加 1 是因為結束字元. */
str = (char*)malloc( length ); /* 向O.S 要 memory */
strcpy( str, s );
printf(「%s\n」, str );
str[0] = 『h』;
printf(「%s\n」, s );
free( str );
return 0;
}
程式執行結果:
Hello World!
Hello World!
strlen 是 C 的 standard library 中求得 string length 的一個 function, 取得 s 的長度之後
加 1 是因為 strlen 並不會把結束字元算進字串的長度. 另外程式中,
以 malloc 這個函數向系統索取一塊記憶空間, malloc 傳回這個空間的 address.
str = (char *)malloc( length );
其中, (char *)是我們強制轉型, 將 malloc傳回的 pointer 型態轉型與 str 一致為
(char *). 接著再以 strcpy 將 s 裡面的字元 copy 至 str.
程式後面的 str[0] = 『h』 只是為了證明 str 與 s 所指的 address 及資料是完全不同的.
程式中以 free 這個 function 釋放(release) 之前向系統索取的空間, 所謂有借有還,
維持良好的程式開發習慣.
/* ================
memory allocation/free 2
================ */
#include stdio.h
#include stdlib.h
int main()
{
char *str;
char s[] = 「Hello World!」;
int length;
length = strlen( s ) + 1;
str = (char*)malloc( length ); /* 向O.S 要 memory */
if( str == NULL )
{
printf(「Memory allocation failed」);
return 0;
}
strcpy( str, s );
printf(「%s」,str );
free( str );
return 0;
}
執行結果, 記憶空間充足的情況」
Hello World!
或記憶空間不足時:
Memory allocation failed
上面的程式中, 我們多了一個判斷, 判斷 str 是否為 NULL, 若為 NULL 則印出
」Memory allocation Failed」, 接著離開程式返回系統, 因為 malloc 在無法取得
你所 大小的記憶空間時會傳回 NULL. 這一個判斷是必 的, 特別是在開發
大型系統時要處理這些問題.
最後談到的是 位址運算元, 這個運算元符號雖然與 Bitwise AND 一樣,
但用法不同, Bitwise AND 的用法是:
Identifier1 Identifier2
而現在說的位址運算元是:
Identifier
本運算元會傳回 Identifier 的 Address(位址), 在 C 中, 所有的 variable (變數)
都存在一個實體的記憶體空間中, 當你 要知道這個變數存放的位址時,
就可以使用 「」 operator.
/* ====================
operator.
==================== */
#include stdio.h
int main()
{
int *pointer_a, a;
pointer_a = a;
a = 10;
printf(「%d, %d」, a, *pointer_a );
return 0;
}
執行結果:
10, 10
程式中, 將 a 的 address 設給 pointer_a (另一說法是: 把 pointer_a 這個 pointer 指向 a ),
因此 pointer_a 所」指」的 address 與 a 的 address 一樣, 所以 a, 與使用 *pointer_a 取出
指向的位址上的資料是一樣的.
在前面的」C的輸出與輸入」章節中, 函數 scanf 的參數皆是 pointer, 所以我們以
「」 operator 將變數的 address 傳入.
C語言中如何讀取一個已知地址中儲存的變數
C語言中如何讀取一個已知地址中儲存的變數
直接用 (char*)(0x000)
補充一下,不同型別的變數占的儲存單元(位元組)是不同的,char*只是該位元組的值,而int*則是該位元組和後面3個位元組(總共4個位元組)的值,你要確定到底一次讀多少位元組,選擇合適型別的指標。
組合語言如何讀取一個地址中儲存的變數
組合語言讀取一個地址的變數有專門的指令,比如51微控制器的幾種讀取方法表述如下:
1、讀取程式儲存器地址中的變數資料
MOV DPTR,#1000H
CLR A
MOVC A,@A+DPTR
2、讀取外部資料儲存器中的變數資料
MOV DPTR,#1000H
MOVX A,@DPTR
MOV R0,#80H
MOVX A,@R0
c語言中是變數儲存地址還是地址儲存變數啊
變數在記憶體中儲存
每個記憶 *** 置都有一個編號,就是記憶體地址值
地址值,就是個整數,所以,也可以儲存到變數中,C中的指標變數,就是專門用來儲存地址的變數 。
C語言中,如何讓指標指向一個已知地址?
讓指標指向一個已知地址,必須轉換型別,在地址前面加上int*,否則不成功。
指標(Pointer)是程式語言中的一個物件,利用地址,它的值直接指向(points to)存在電腦儲存器中另一個地方的值。由於通過地址能找到所需的變數單元,可以說,地址指向該變數單元。因此,將地址形象化的稱為「指標」。意思是通過它能找到以它為地址的記憶體單元。
c語言中變數是怎樣儲存的?
根據各變數的型別儲存方式不一樣,靜態變數,動態變數等不一樣
C語言中指標變數只能儲存地址?
是的,目前絕大多數系統下,任何型別的指標都是佔用4個位元組(見過比較新的RedHat還是Ubantu的,指標是佔8個位元組的),而指標佔用空間存在的值就是指標指向的變數的記憶體地址,而目前的記憶體地址都是4G的(我們列印看到的都是虛擬的記憶體地址,所以可能你的電腦的記憶體是8G的,但是用%x列印輸出絕對不會超過4G)。指標本來就是間接定址,是需要二次定址的,指標變數本身也只能儲存地址
在C語言中如何列印變數的地址?
需要定義指標變數才能輸出變數的地址
舉個簡單的里自來說:
#include “stdio.h”
void main()
{
int a=1,b=2;
int *p1,*p2;
p1=a;p2=b;
printf(“變數a的地址為:%d\n變數b的地址為:%d\n”,p1,p2);
system(“PAUSE”);
}
執行程式即可看到變數a和變數b在記憶體中分配的地址
C語言中,已知一個字串的地址,如何讀取地址中的字串??急求!
printf(”%s”,addr);可以直接顯示字串
C語言中函式是如何儲存的
1. 程式碼本身是儲存在記憶體的程式碼段中的,而函式沒有說儲存的概念,函式呼叫時是通過棧來實現的。
2.在函式體內宣告的變數在預設情況下都是auto儲存型別
在程式碼塊之間傳遞資訊的一種方法就是使用外部變數。當一個變數在函式的外部被宣告時,安的儲存空間是永久分配的,安人儲存型別是extren.外部變數的宣告看上去和函式或程式碼塊內部所宣告的變數一樣。外部變數對於它之後的所有函式都有效。在程式碼塊或函式後,外部變數仍然存在。
3.static的基本用途是允許一個區域性變數在重新進入程式碼塊時能夠保持原來的值。這和自動變數形成了鮮明的對比,自動變數在程式碼塊時會被銷毀,再次進入這個程式碼塊時,它必須重新進行初始化。
4.egister儲存型別告訴編譯器相關的變數應該改量儲存在高速度的暫存器中。使用register儲存型別的目的一般是為了提高執行速度,但是,register宣告只是向編譯器所提出的「建議」,並非強制要求。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/259183.html