1樓:冬天終將過去
定義:char ch[10];
char ch2;
char* str;
以及"string"。
1.全域性的變數和函式內的static變數,存放在記憶體堆區域。
2.全域性的陣列和函式內定義的static的陣列,存放在記憶體堆區域。
3.區域性變數,陣列,存放在記憶體的棧區域。
4.定義char ch[10]時,如果是全域性或者static的,就在堆區域給他分配10byte的空間,並且如果使用者沒有給它初值,10byte資料全部置零。
5.定義char ch[10]時,如果是區域性陣列(在函式內定義且不是static的),則在棧區域分配10byte的空間,如果使用者沒有給它初值,10byte的資料未知,為記憶體中原來的不確定資料。
2樓:匿名使用者
字元指標變數和字元陣列的區別:
簡單說一下:
字串陣列是用來存放字串的陣列,在記憶體中佔一段連續的單元。所佔記憶體存放的是字串。定義方法為:
char a[n];n為常量表示式,可初始化。字元指標是指向字元的指標,所佔記憶體單元存放的是所指字元的記憶體單元。定義方法為:
char *p;
完整的解答:
1)字元陣列由若干個元素組成,每個元素中放一個字元,而字元指標變數中存放的地址(字串第一個字元的地址),決不是將字串放到字元指標變數中
2)賦值方式
對於字元陣列只能對各個元素賦值,不能用以下辦法對字元陣列賦值:
char str[14];
str = "i love you!";
而對於字元指標變數,可採用如下賦值:
char *a;
a = "i love you!";
賦值給a的是字串第一個元素的地址
3)對字元指標賦初值
char *a = "i love you!";
等價於char *a;
a = "i love you!";
而對陣列的初始化:
char str[14] = ;
不等價於
char str[14];
str = "i love you!";
4)如果定義了一個字元陣列,在編譯時為它分配記憶體單元,它有確定的地址。而定義一個字元指標變數時,給指標變數分配記憶體單元,在其中可以放一個字元變數的地址
char *a, str[10];
a = str;
scanf("%s", a);
先使a有確定值,即使a指向一個陣列的首元素,然後輸入一個字串,把它存放在以該地址開始的若干單元中
5)指標變數的值是可以改變的,而陣列名是常量
6)用指標變數指向一個格式字串,可以用它代替printf函式的格式字串
char * format;
fomat = "a = %d, b = %f\n"
printf(format, a, b);
相當於printf("a = %d, b = %f\n", a, b);
因此只要改變printf所指向的字串,就可以改變輸入輸出格式,這種printf函式稱為可變格式輸出函式
也可以用字元陣列實現:
char format;
format = "a = %d, b = %f\n"
可以看出,用指標變數指向字串更簡潔
指標與陣列 字元指標,字串和字元陣列的區別
3樓:士楓終靈凡
字元指標變數和字元陣列的區別:
簡單說一下:
字串陣列是用來存放字串的陣列,在記憶體中佔一段連續的單元。所佔記憶體存放的是字串。定義方法為:char
a[n];n為常量表示式,可初始化。字元指標是指向字元的指標,所佔記憶體單元存放的是所指字元的記憶體單元。定義方法為:char
*p;完整的解答:
1)字元陣列由若干個元素組成,每個元素中放一個字元,而字元指標變數中存放的地址(字串第一個字元的地址),決不是將字串放到字元指標變數中
2)賦值方式
對於字元陣列只能對各個元素賦值,不能用以下辦法對字元陣列賦值:
char
str[14];
str=
"ilove
you!";
而對於字元指標變數,可採用如下賦值:
char
*a;a="i
love
you!";
賦值給a的是字串第一個元素的地址
3)對字元指標賦初值
char*a=
"ilove
you!";
等價於char
*a;a="i
love
you!";
而對陣列的初始化:
char
str[14]=;
不等價於
char
str[14];
str=
"ilove
you!";
4)如果定義了一個字元陣列,在編譯時為它分配記憶體單元,它有確定的地址。而定義一個字元指標變數時,給指標變數分配記憶體單元,在其中可以放一個字元變數的地址
char
*a,str[10];a=
str;
scanf("%s",
a);先使a有確定值,即使a指向一個陣列的首元素,然後輸入一個字串,把它存放在以該地址開始的若干單元中
5)指標變數的值是可以改變的,而陣列名是常量
6)用指標變數指向一個格式字串,可以用它代替printf函式的格式字串
char
*format;
fomat="a
=%d,b=
%f\n"
printf(format,
a,b);
相當於printf("a
=%d,b=
%f\n",
a,b);
因此只要改變printf所指向的字串,就可以改變輸入輸出格式,這種printf函式稱為可變格式輸出函式
也可以用字元陣列實現:
char
format;
format="a
=%d,b=
%f\n"
可以看出,用指標變數指向字串更簡潔
c語言字元指標和字元陣列的區別
4樓:繁楚餘甲
推薦回答裡面是有問題的,對於指向字元的指標來講,其指向內容是否可變,要看他指向的內容,指向字元的指標可以指向兩種字串:1.字串常量,如char
*q="abcd",這裡q指向的內容是不可變的,即q[1]='a'是不合法的;2.字串變數,如char
p[10],然後給p賦值,然後char
*q=p,這裡的q指向的內容是可以變的
需要注意的是,這裡是q指向的內容是否可變,而不是q指向的記憶體是否可變也就是說1中的q可以有q=p(p也是一個字元指標)這樣的操作
5樓:昝蝶欒歌
兩個用法差不多,唯一的區別在於字元陣列的值在程式執行過程中是可以修改的,但是字元指標的值在執行過程中是不能修改的。
#include
using namespace std;
int main()
6樓:士楓終靈凡
字串指標變數本身是一個變數,用於存放字串的首地址。而字串本身是存放在
以該首地址為首的一塊連續的記憶體空間中並以『\0』
作為串的結束。字元陣列是由於若干個數
組元素組成的,它可用來存放整個字串
char
*p=「c
language」;
char
p=;可以理解為:字元指標是字元陣列的退化但是實際使用中,字串指標卻比字元陣列更好用
7樓:隆耕順須倩
字串指標變數的定義說明與指向字元變數的指標變數說明是相同的。只能按對指標變數的賦值不同來區別。
對指向字元變數的指標變數應賦予該字元變數的地址。如:
char
c,*p=&c;表示p是一個指向字元變數c的指標變數。而:
char
*s="c
language";則表示s是一個指向字串的指標變數。把字串的首地址賦予s。
字串陣列與字元指標的區別
8樓:大野瘦子
一、 讀寫能力
char *a = 「abcd」; 此時"abcd"存放在常量區。通過指標只可以訪問字串常量,而不可以改變它。
而char a[20] = 「abcd」; 此時 "abcd"存放在棧。可以通過指標去訪問和修改陣列內容。
二、用法
在程式設計過程中如果只涉及到對字串的讀取,那麼字元陣列和字串常量都能夠滿足要求,如果有寫入(修改)操作,那麼只能使用字元陣列,不能使用字串常量。
c語言有兩種表示字串的方法,一種是字元陣列,另一種是字串常量,它們在記憶體中的儲存位置不同,使得字元陣列可以讀取和修改,而字串常量只能讀取不能修改。
三、存取效率
char *a = 「abcd」; 存於靜態儲存區。在棧上的陣列比指標所指向字串快,因此慢。
而char a[20] = 「abcd」; 存於棧上,更快。
9樓:匿名使用者
字元指標變數和字元陣列的區別:
簡單說一下:
字串陣列是用來存放字串的陣列,在記憶體中佔一段連續的單元。所佔記憶體存放的是字串。定義方法為:
char a[n];n為常量表示式,可初始化。字元指標是指向字元的指標,所佔記憶體單元存放的是所指字元的記憶體單元。定義方法為:
char *p;
完整的解答:
1)字元陣列由若干個元素組成,每個元素中放一個字元,而字元指標變數中存放的地址(字串第一個字元的地址),決不是將字串放到字元指標變數中
2)賦值方式
對於字元陣列只能對各個元素賦值,不能用以下辦法對字元陣列賦值:
char str[14];
str = "i love you!";
而對於字元指標變數,可採用如下賦值:
char *a;
a = "i love you!";
賦值給a的是字串第一個元素的地址
3)對字元指標賦初值
char *a = "i love you!";
等價於char *a;
a = "i love you!";
而對陣列的初始化:
char str[14] = ;
不等價於
char str[14];
str = "i love you!";
4)如果定義了一個字元陣列,在編譯時為它分配記憶體單元,它有確定的地址。而定義一個字元指標變數時,給指標變數分配記憶體單元,在其中可以放一個字元變數的地址
char *a, str[10];
a = str;
scanf("%s", a);
先使a有確定值,即使a指向一個陣列的首元素,然後輸入一個字串,把它存放在以該地址開始的若干單元中
5)指標變數的值是可以改變的,而陣列名是常量
6)用指標變數指向一個格式字串,可以用它代替printf函式的格式字串
char * format;
fomat = "a = %d, b = %f\n"
printf(format, a, b);
相當於printf("a = %d, b = %f\n", a, b);
因此只要改變printf所指向的字串,就可以改變輸入輸出格式,這種printf函式稱為可變格式輸出函式
也可以用字元陣列實現:
char format;
format = "a = %d, b = %f\n"
可以看出,用指標變數指向字串更簡潔
c語言字串陣列的問題C語言字串陣列的問題
include int main scanf s a for i 0 a i 0 i for j 0 j 5 j 修改 1 下標從0 4,共5個 return 0 每行結尾的 僅僅是為了連線字串使用的,如果一個字串過長,寫在一行比較不合適,就在該行結尾處加上一個反斜槓 就可以在下邊的行繼續寫這個字串...
任意輸入字元組成字串,對該字串中的字元按ASCII碼值升序排列後輸出,程式設計實現此功能
在手機知道中已有 知道君 正確的回答,電腦中為何看不見呢 public class form1 不限制輸入的字元個數 private sub button1 click byval sender as system.object,byval e as system.eventargs handles...
matlab中,陣列和字串陣列的區別。將陣列轉化為字串陣列到底什麼意思是
二者的組成不同 陣列的組成元素是複數,字串陣列的組成元素是數字字串 二者的精度不同,陣列表示的數都是近似值,字串陣列表示的值都是精確值。例如陣列的1 3表示為0.3333,字串陣列表示的是1 3。二者的運算不同,比如陣列有 等運算,但字串陣列只有 和 兩種運算。字串陣列中還有許多數值運算中所沒有的特...