1樓:紅豆沙
c2是代表的這個陣列的第一個字元的地址,地址就是常量,所以不能被賦值。
2樓:
c語言規定,不可以給已經定義的陣列名重新賦值。因為陣列名中存放的是陣列的首地址。
值為「abc edfg」的字串常量在賦值過程中給出的是這個字串在記憶體所佔一串連續儲存單元的首地址。而c2是一個不可重新賦值的陣列名。因此,這樣賦值不合法。
3樓:匿名使用者
*p是char(字元型)指標變數
先將*p的地址*(字串的第一個字元)賦給s,然後執行while迴圈,*p所指地址改變為最後一個字元的地址,p-s就是*p最後的地址減去最初的地址,得到的就是字串的長度了。
逐字解釋下你的程式
#include
#include 這個程式包含了2個標頭檔案 studio 和string
int test strlen(char *s) 這是一個等待呼叫的子程式 程式名為 strlen 呼叫的時候,給入與
括號裡的相同型別變數
關於字串在電腦中的存放的實體地址,一般是指標指向字串的第一個實體地址,當呼叫的時候會依次取用
如字串」angngongbi」
對應的邏輯地址 實體地址(假設的)
a 0 oe0fhi2
n 1 0g3fte2
g 2 .......
n 3 .......
g 4 .......
o 5 .......
n 6 .......
g 7 .......
b 8 .......
i 9 .......
4樓:匿名使用者
char c[30]="abcd efg";這個是初始化操作c2="abc edfg";這個是賦值運算元組是不能直接賦值的,c就是這麼規定只有初始化的時候可以這麼寫。
就像常量一樣,常量不能賦值,但可以並且必須初始化,如const int x = 1;
但不能寫成const int x; x = 1;這就解釋了什麼叫初始化
指標就另外了。
char* c2;
c2="abc edfg";
這是可以的,但指標指向的是字串常量。
5樓:危獻
c2是陣列名
不是指標
簡單地說 指標就像名字
陣列名就像你這個人的特徵
a可以叫這個名字 b也可以
張三生了個孩子叫張三 然後張三的孩子張三夭折了張四生了個孩子正好缺名字 於是起名叫張三了 於是張三就成了張四孩子的名字
但是 計時張四的孩子的名字叫張三 他的特徵還是張四
c語言中,怎麼樣定義一個字串變數
6樓:魔劍
c語言沒有字串型別,所以沒辦法進行定義字串變數。
但是可以用字元陣列來處理字串。(這定義了一個字元陣列,名為a)例:char a = "hello";
也可以用來定義一個指標變數(定義了一個指標變數,名為p)。
例:char *p = "hello";
接觸c語言幾天。。查了一些資料是這樣理解的,有不對的地方一起學習啦。
7樓:高_婷婷
一維的情況如下:
char string0[10];
char string1="prison break";
char string2[100]="michael scofield";
第一句表示定義個長度為10的字串,但未
賦值;第二句表示定義了一個字元陣列string1,並進行初始化,使得其長度自動為13(字串」prison break"中的字元個數加上結尾的'\0');
第三句定義了一個有100個元素的字元陣列string2,並初始化了17個元素("michael scofield";加上結尾的'\0')。
二維的情況如下:
char string3[6][30];
char string3[6][30]=;
此句表示有6個字串,每個字串的長度為30,每個字串的初始值與「joy"、"phosee"、"monses"、"chandele"、"ross"、"rather"相對應。
8樓:匿名使用者
在c語言中,字串是由字元陣列表示的。同時,字元指標也可以理解成為字串。所以,定義字串變數就是定義字元陣列或字元指標的過程。
1 定義變數字串。
char str[200];
定義一個長度最大為200字元的字串。
2 定義常量字串。
由於常量字串儲存在常量空間中,所以只需要定義一個指標,指向該地址即可。如
char *s = "test string";
9樓:牙牙啊
1、定義變數字
符串。char str[200];
定義一個長度最大為200字元的字串。
2、定義常量字串。
由於常量字串儲存在常量空間中,所以只需要定義一個指標,指向該地址即可。如char *s = "test string"。
c語言:
c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。
儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。
二十世紀八十年代,為了避免各開發廠商用的c語言語法產生差異,由美國國家標準局為c語言制定了一套完整的美國國家標準語法,稱為ansi c,作為c語言最初的標準。
目前2023年12月8日,國際標準化組織(iso)和國際電工委員會(iec)釋出的c11標準是c語言的第三個官方標準,也是c語言的最新標準,該標準更好的支援了漢字函式名和漢字識別符號,一定程度上實現了漢字程式設計。
10樓:孫樹帥
誰和誰家家語言中怎樣定義一個字元,你可以請教你的計算機老師啊。
11樓:匿名使用者
如果字串長度不確定,例如讓使用者來輸入,可先定義長度變數例如:#include
#include
int length;
char *p;
scanf("%d",&length);
p=(char *)malloc(length*sizeof(char));
12樓:
沒有字串型別,所以要用char陣列
#include
#include
void main()
13樓:完全可以
#include
cstring string;
string即使字串變數 可以給它賦值~
14樓:
#include
cstring cstr="value";
15樓:匿名使用者
char *cs="helloworld";
哦。這是常量了。
c語言如何定義一個常量字串
16樓:馬小芳
定義:用雙引號(「」)括起來的0個或者多個字元組成的序列儲存:每個字串尾自動加一個 『\0』 作為字串結束標誌(1)在c語言中沒有專門的字串變數,如果想將一個字串存放在變數中以便儲存,必須使用字元陣列,即用一個字元型陣列來存放一個字串,陣列中每一個元素存放一個字元。
例如「char a[10]="love".」
(2)在程式中,字串常量會生成一個「指向字元的常量指標」。當一個字串常量出現於一個表示式中時,表示式所使用的值就是這些字元所儲存的地址,而不是這些字元本身。因此,你可以把字串常量賦值給一個「指向字元 的指標」,例如:
char *a = "123" ; a = "abc";,後者指向這些字元所儲存的地址。但是,你不能把字串常量賦值給一個字元陣列,因為字串常量的直接值是一個指標,而不是這些字元本身。例如:
char a[5];a[0] = "a";就是錯誤的,報錯結果:invalid conversion from 'const char*' to 'char'。
例如:char a[10]="love",的意思就是用字串「love」來初始化字元陣列a的記憶體空間,而陣列的首地址也就是「love」字串的地址。
17樓:
【方式1】巨集定義
#define string "hello,world"
【方式2】字元陣列
char str=; //大括號可以去掉//等價於
char str=;
【方式3】字元指標
char *pstr="hello,world";
c語言 字串定義長度問題
18樓:秋山木葉
這個你就要去仔細溫習一下你的課本了,字串的話,它都是以『\0』作為結尾的,所以你的「s」其實s後面還有一個『\0』,所以你的str[1]少了,不過你要是這樣初始化就可以str[1]=,這樣就是陣列的初始化方式,就不會錯了。
19樓:懷德爾
字串後面都有一個結束符的。
c語言字串常量的問題,C語言字串常量的一個問題。
字串bai遇到 0表示結束 第一個字du符串就相zhi當於dao abc123 那版麼長度為6 第二個字串就相當於 abc 那麼長度為3但是實際操作權發現並非如此,如下程式 include memcpy c1,abc123 01de n 0x20 printf s n c1 char c2 0x20...
c語言列印字串亂碼問題,C語言,字串輸出是亂碼
include void reverse char p,char q char myitoa int value,char const string,int radix else while value if sign reverse string,s 1 s 0 return string int...
c語言如何定義字串陣列C語言如何定義字串陣列
c語言字串陣列中的每一個元素均為指標,即有諸形如 ptr array i 的指標。由於陣列元素均為指標,因此ptr array i 是指第i 1個元素的指標。例 如二維指標陣列的定義為 char ptr array 3 擴充套件資料 字串陣列陣列元素表示方法 陣列元素的一般形式為 陣列名 下標 其中...