用陣列和指標初始化字串的區別

2021-05-22 17:56:09 字數 554 閱讀 9202

在c語言中 "string"儲存的就是首個字元所在的位址  所以可以把 字串常量"string" 賦值給指標 char *p;  p="string"  但不能把字串常量 直接賦給陣列,需要用到 strcpy。  但可以對陣列初始化為  字串,也就是字元陣列 如  char str="string"; 

兩種初始化的區別:char * p="the fine day" 和 char str="the fine day"的區別, 這兩個都是給字串的初始化,前者只是把字串的首位址給str,沒有分配足夠的記憶體位址來儲存整個字串 , 後者初始化的同時,把他們儲存在陣列中,也就是分配好了所有字元需要的記憶體。 所以如果想把另乙個 字串複製到str中,  char str1="the day";   

strcpy(p,str1);//錯誤   需要加  p=(char*)malloc(strlen(str1)+1); 才正確

strcpy(str,str1);//正確

示例程式

#include "stdio.h"

#include "string.h"

int main()

字串 用陣列初始化和用指標初始化方法區別

const char ptr1 fine.const char ar fine.以上的宣告中,ptr1和ar都是該字串的位址,但這兩種形式並不完全相同。初始化陣列 字串儲存在靜態儲存區。但是,程式在開始執行時才會為該陣列分配內 存 以上面的宣告為例,陣列形式ar 在計算機的記憶體中分配為乙個內含6 ...

字串初始化指標和初始化陣列區別

定義指標時,編譯器並不為指標所指向的物件分配空間,它只是分配指標本身的空間,除非在定義時同時賦給指標乙個字串常量進行初始化。在ansi c中,初始化指標時所建立的字串常量被定義為唯讀。如果試圖通過指標修改字串的值,程式就會出現未定義的行為。在有些編譯器中,字串常量被存放在只允許讀取的文字段中,以防止...

字串 用陣列初始化和用指標初始化方法

1 字串陣列初始化 1 用足夠的空間的陣列儲存字母串 const char example 40 so big it is.const表示不會更改這個字母串 還有這種 const char example 40 注意最後的空字元 0 沒有這個空字元,這就不是乙個字串,而是乙個字元陣列。2 讓編譯器確...