一道C語言關於字串和指標的選擇題

2021-03-12 09:34:48 字數 1352 閱讀 7450

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是一個陣列,也是一個地址,後...