1樓:匿名使用者
d的問題bai和a的問題是
不一樣的。
d中str1的用du字串
zhi常量來初始化的dao,由於str1是指標,所以版不會給它分配權儲存字串的記憶體,它指向的是一個字串常量,就是說它指向的是靜態記憶體,後面strcpy時要修改這段靜態記憶體,所以就出錯了。
char str1="12345":給str1陣列分了6個位元組的記憶體(在棧裡)
char *st1="12345":並沒有分配記憶體,str1指向字串"12345"的首地址(在靜態儲存區裡,即**區,它是**的一部分)。
2樓:米素晃晃
a.str1指向的是12345+'\0'這6個位元組
自str2指向的是abcdef+'\0'這7個位元組
我們假設緊接著str1的6個位元組的
bai後面,存有
du一個別的變數str3,
那麼zhi如果把7個位元組拷貝到6個位元組的位置,多出來的那個位元組就會影響到後面的str3。
b.str[10]在建立以後,實際上已經存有東西了,只是一些系統的亂碼,你可以列印它試試
所以如果使用strcat進行連線,實際上是從那些亂碼的後面開始連線的,
然後就會出現a裡面那個問題,連線完的字串超出了str的範圍了
c.str[10]=""說明現在str裡面沒有東西,所以連線st的時候,是從str[0]開始連線的。
str的空間足夠放入st的那些字元,所以ok~
d.這個dao和上面的問題是一樣的
ps:一樓的回答。。有些問題哈。。。。
3樓:
abd錯誤都一樣,就是str1/str/st1的空間不夠,會造成緩衝區溢位
4樓:匿名使用者
a 不能這樣宣告,中括號中必須有數字
b strcat的兩個字串必須以\0字元結尾,而單宣告並不能保證
d 這個問題不懂怎麼解釋。。。就是不行這樣,可能造成奇特的錯誤
c語言 指標習題 用指向指標的指標的方法對n個字串排序並輸出。要求將排序單獨寫成一個函式。n和各
5樓:
c語言程式如下:62616964757a686964616fe4b893e5b19e31333339666664
#include
#include
#include
#define n 100
#define max 100
void sort(char** str,int n)}}} void main()
sort(a,n);
for(i = 0;i < n;i++)}
字串指標移動問題,關於字串和指標的問題
因為 p 沒有分配記憶體,指向的是系統的記憶體,那段記憶體是隻讀的,因此改變那裡的值是錯誤的 char a abcde char p a p 1 w 這樣是正確的,因為a那段記憶體是可寫的 你上面的,你可以理解為 const char a abcde char p a p 1 w 錯誤,因為a是co...
c語言書上的一道程式設計題,輸入字串,並按字母順序排列後輸出。程式如下
define linemax 20 定義字串的最大長度 int main sort char p 冒泡法對5個字串排序函式 return 0 printf 函式的呼叫格式為 printf 格式化字串 參量表 其中格式化字串包括兩部分內容 一部分是正常字元,這些字元將按原樣輸出 另一部分是格式化規定字...
請教!關於C 裡的字串 指標 new的用法
p1是一個char指標,p1所指記憶體存放著 a 的地址p2也是char指標,其所指記憶體中存放著變數a的地址p3顯然是不對的,不能把char變數賦值給char指標 p4則存放著字串的首個字元的地址 陣列名稱就是地址.char name new char 20 中name是一個陣列,也是一個地址,後...