1樓:匿名使用者
在c/c++中,陣列是指 連續分佈的記憶體單元。字串是一種字元陣列,比其他陣列特殊的地方是如果陣列被賦值(scanf,fread,fprintf,strcpy,nstrcpy)會在陣列末尾追加'\0'.
在c語言中,陣列大小是不可知的。(strlen(s)只能算出從s開始到'\0'的長度)
2樓:匿名使用者
總體來說,陣列未初始化之前都是不可知的,如果強行輸出時會是亂碼。對於字元型陣列,只要定義個數小於等於定義的個數,它都會自動加/0。對於整型陣列,不會加/0。
3樓:匿名使用者
你定義的char a[60],因為陣列是從a[0]開始計算的 如果你沒有賦值
那麼預設的是全是0 也就是全是空格 以內你定義的是字元型。
‘\0’是系統給你加的 它的位置是a[60]的60個元素的後面 不佔用你定義的60個元素
你定義的是字元陣列 不是int 行陣列 char定義的是放字元 字串的
4樓:匿名使用者
這個問題是你把陣列與字串搞混了;
比方說char[60]="i a m",你用字串賦值的話,你的字母個數必需小於60,否則就會出錯,如果小於60的話,系統會自動加"\0",而陣列卻不同,你可以正好等於60,也就是說最後一個數字不一定等於"\0".如果小於60,則後面當然是0了
簡單一點說:你用字串賦值的話後面系統就會自動加"\0",陣列賦值後面是不自加"\0"的.
5樓:匿名使用者
自己試一下就知道了,先定義一個字元陣列(不初始化),用gets函式輸出,如果什麼也沒有就說明未初始化時全部賦'\0',如果是亂碼就說明是隨機值。
部分初始化我知道,後面未被賦值的部分自動賦'\0'
6樓:
在c語言中,字元陣列中存放的內容中字元的asc碼。如果在定義過程中沒有賦初值,則陣列中的元素都為0。如
char c[10];
定義了c是一個字元陣列共有10個元素c[0]、c[1]……c[9],因為沒有賦初值,所以這10個元素的值都是0。
如果定義時賦了初值,或在程式中賦元素的值,則該元素儲存對應字元的asc碼值。如:
char c[10]="abcd";
則元素a[0]=65 //'a'的asc碼是65
a[1]=66 //'b'的asc碼是66
a[2]=67 //'c'的asc碼是67
a[3]=68 //'d'的asc碼是68
在程式中,a[0]='a'和a[0]=65是等價的。
驗證:char a[10]="abcd";
printf("%d %c\n",a[0],a[0]); //輸出65 a
printf("%d %c\n",a[3],a[3]); //輸出68 d
a[3]=65;
printf("%d %c\n",a[3],a[3]); //輸出65 a
printf("%d",a[6]); // 輸出0 因為沒有賦a[6]初值,所以其值為0
c語言程式設計:輸入一個字串存放在陣列a中,將其中的所有小寫字母存放到字元陣列b中並輸出?
7樓:司馬刀劍
#include
#include
#include
#define max 10
int main()
}for (int i = 0; i < strlen(b); i++)
system("pause");
return 0;}
8樓:匿名使用者
#include
#include
int main()
printf("\n");
puts(b);
return 0;}
c語言如何定義陣列存放字元和數字
興文博武數碼館 遇到字母和數字混合的陣列,定義的時候就不要定義為int型陣列,因為用 d輸出不了字母,輸出的是字母的ascii碼,不是輸出的字母本身,所以,要定義為 字串型的陣列。若不是裡面有個佔兩個字元的 10 可以直接用 s 輸出。但是因為有 字元 10 s輸出的是0 就不能用了,就只能用for...
C語言中怎樣定義動態一維陣列,c語言中定義一個動態一維陣列的函式,然後在主函式中使用
天雲一號 在c語言中,陣列的定義都是固定長度的,長度不允許變化。可以通過連結串列的方式來達到定義 動態陣列 的等價功能,舉例如下 連結串列節點定義如下 struct node 存放資料時可以對節點中的node賦值即可,如 struct node p 定義一個連結串列節點p data 3 存放第一個資...
C語言,字串陣列的輸出,C語言 如何定義字串陣列
自我程式設計 getch 這句多餘,只是列印而已不需要這個函式接收字元。printf s n ch 0 printf s n ch 1 printf s n ch 2 這3句列印,第2個傳參和printf函式形參型別不一致,函式需要的是char 而你給的是char 12 執行可以,但會有警告。你想要...