變數
全域性變數和靜態變數的異同
相同點:都保留在靜態儲存區,生命期與程式生命期相同。
不同點:全域性變數具有全域性作用域,靜態變數具有穩健作用域。
把區域性變數改為靜態變數後是改變了它的儲存方式,即改變了它的生存期;把全域性變數改變為靜態變數後是改變了它的作用域,限制了它的適用範圍。
全域性變數和區域性變數的區別
1)全域性變數的作用域為這個程式塊,而區域性變數的作用域為當前函式;
2)記憶體儲存方式不同,全域性變數分配在全域性資料區,後者分配在棧區;
3)生命週期不同。全域性變數隨主程式建立而建立,隨主程式銷毀而銷毀,區域性變數在區域性函式內部,甚至區域性迴圈體等內部存在,退出就不存在了;
4)使用方式不同。通過宣告後全域性變數程式的各個部分都可以用到,區域性變數只能在區域性使用。
字串
自行實現strcpy()函式
char * strcpy(char *strdest,const char *strsrc)
char *address = strdest;
while((*strdest++ = *strsrc++) != 『\0』);
return address;
}
自行實現stoi()和itoa()函式
int myatoi(char *str)
while(*str == 『』)
while((*str == (char)0xa1) && (*(str+1) == (char)0xa1))
int nsign = (*str == 『-』) ? -1:1;
if(*str == 『+』|| *str == 『-』)
int nresult = 0;
while(*str >= 『0』 && *str <= 『9』)
return nresult * nsign;}
char* myitoa(int num)
dowhile(num > 0);
if(sign < 0)
temp[i] = 『\0』;
i--;
while(i >= 0)
str[j] = 『\0』;
return str;
}
自行實現memcpy()函式
與strcpy相比,memcpy遇到『\0』不結束,而是一定會複製完n個位元組。而且目標資料dest本身已有資料,執行memcpy()後,將覆蓋原有資料(最多覆蓋n)。如果追加資料,則每次執行memcpy後,要將目標陣列位址增加到要追加資料的位址。
void* mymemcpy(void *dest,const void *src,size_t count)
}else
}return dest;
}
字串變數
string是乙個類,string的變數是物件的管理者而非所有者,就像陣列變數是陣列的管理者而非所有者一樣。new 建立 string s new string a string 建立了乙個string的物件,用 a string 初始化這個物件,建立管理這個物件的變數s,讓s管理這個物件 初始化字...
字串變數
末尾有 0 結尾符表示字串的結束。1.若字串相同則二者事實上是乙個實體 2.字串常量的生命週期跟應用程式的生命週期是一樣的。子函式退出後可以使用字串常量。3.常量就const char這種 他的生存週期和普通變數無區別 但字串常量 abcd 這種生存期是整個程式 那麼可以很自然想到const cha...
字串,字串字面量和字串變數
1.1.1.0 字串的定義 字串是用雙引號括起來的子覅序列,並以乙個空字元來標識字串的結束。1.1.1.1字串常量 1 字串常量的性質 字串字面量是不可改變的量,它作為字元陣列儲存在記憶體空間中。abcdef 如果一行寫不開可以把第一行以 結尾,第二行頂格寫完。abc def 或者將他們分別用雙引號...