本文目錄一覽:
- 1、C語言我的字元串無法賦值
- 2、怎麼進行字元串賦值?C語言
- 3、C語言中怎麼字元串賦值?
- 4、關於C語言字元串賦值的問題
- 5、c語言為什麼 字元串不能直接賦值 比如 int a[10]; a = “wenti”;
C語言我的字元串無法賦值
你把
printf(“\t\t%s\n”,p[20]);
換成
printf(“\t\t%s\n”,p);
就可以了
怎麼進行字元串賦值?C語言
在C語言中,字元串的賦值主要有兩種方法,第一種是通過指針的方式直接賦值,第二種是通過數組直接賦值。
1、指針式賦值。
通過程序的運行情況,可以知道:char *p = “hello”;這種字元串的賦值方式是完全沒有問題的。要理解這種賦值方式,首先得理解雙引號(特別注意:這個是雙引號,不要賦值的時候給弄了個單引號)在這個語句中做了什麼工作。雙引號主要做了3個工作,分別是:
(1)申請了空間(在常量區),存放了字元串。
(2)在字元串尾加上了「\0」。
(3)返回地址。
這裡所返回的地址就賦值給了char *類型的指針變數p。
2、通過字元數組直接把字元串賦值。程序如下:
擴展資料:
字元串賦值需要注意的一些問題:
直接把字元串賦值給數組名(也就是數組首元素的首地址)是不行的。
會出現以下錯誤:
參考資料:
百度百科–字元串賦值
C語言中怎麼字元串賦值?
需要準備的材料分別有:電腦、C語言編譯器。
1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。
2、在test.cpp文件中,輸入C語言代碼:char a[20];strcpy(a, “hello”);printf(“%s”, a);。
3、編譯器運行test.cpp文件,此時成功將字元串賦值給了字元串a並列印。
關於C語言字元串賦值的問題
str[10]=’\0′;
以上這行是越界操作。但是在這個程序中str[10]這個單元是編譯留空的,沒有與其他變數衝突,所以不出錯。在VC下,如果改成12,就與 i衝突了。以下例子可知 str[12]=’\0’相當於把i置為0:
#include stdio.h
void main()
{
int i;
char str[12];
for(i=0;i12;i++)
str[i]=i+’a’;
printf(“i=%d\n”, i);
str[12]=’\0′;
printf(“%s\n”,str);
printf(“i=%d\n”, i);
getch();
}
在其他編譯環境中,可能影響在str後面聲明的變數。
c語言為什麼 字元串不能直接賦值 比如 int a[10]; a = “wenti”;
數組名代表首地址,你定義int
a[10],系統會給你開闢空間,當a[10]的生存周期結束,系統就會通過它的地址也就是a來釋放它。a
=
“wenti”實際上是字元串常量”wenti”的首地址賦值給了a,如果可以直接賦值,那麼當a[10]的生存周期結束的時候,系統就找不到它的開闢的空間了,就無法釋放它的空間,所以不能直接賦值!
原創文章,作者:UYPA,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/143332.html