c語言char初始化
Ⅰ c語言中char*的初始化問題
char *a;
a是一個字元型指針,因為賦指時沒有為a分配內存空間,所以a的指向是不確定的,那麼a就有可能指向內存的重要區域
第二種方法,scanf("%s",a);直接將輸入的字元串寫入a指向的空間,所以極有可能破壞重要數據,引起系統崩潰。如果真要這么用,要先分配空間char *a=(char *)malloc(12);
而第一種方法,a = "Hi, you!";,其實在編譯器看來,先為"Hi, you!"分配了一塊空間,"Hi, you!"其實是它所在的空間首地址。所以a = "Hi, you!";其實是將a重新指向"Hi, you!"的空間,所以沒問題。
注意,char *a="Hi,you!";和char *a; a = "Hi, you!"; 是一樣的。
而不同於char *a; strcpy(a,"Hi, you!");
這種是不對的,是將"Hi,you!"直接復制到a的空間里,所以也不安全
Ⅱ C語言中怎麼初始化字元變數
C語言中,初始化操作就是在定義變數的時候,對變數進行賦值,即稱為變數的初始化。對於字元變數也是一樣的。
舉例如下:
charch='a';//定義一個字元變數,變數名為ch,並進行初始化
charstr[]="abcd";//定義一個字元數組,數組名為str,並進行初始化
Ⅲ c語言字元數組初始化語法:char str[]=""與char str[]={}有何區別
區別不大,看你怎麼用
如果你這樣寫:
char str[]="abc" ;
char str[]={"abc"} ;
那就沒區別
char str[]="abc" ;
char str[]={'a','b','c'} ;
那就有區別了,char str[]="abc" ;相當於char str[]={'a','b','c',0 } ;
這樣就看出區別了,數組長度不一樣,一個是4因為會自動添加一個結束符,一個是3不會添加結束符。
Ⅳ 在C語言中,關於字元型指針初始化char *p="hello world" 的問題
對於字元串常量,編譯器都是默認按其大小分配內存存放字元串,並把地址首地址賦值指針變數。
如:
char
*p="hello
world";
其實編譯的時候等於:
const
char
str[]
=
"hello
world";
char
*p
=
str;
只不過這個
str
數組名你沒法直接拿來用而已。
Ⅳ C語言的char指針初始化理解
char 指針,也就是char *類型。 其初始化本質上與其它變數初始化沒有什麼區別,就是賦予其一個初始化的值。
對於指針來說,在C語言中,就是一個地址。區分初始化情況,有四種表象:
1 初始化為空。即
char * str = NULL;
的形式,NULL在C語言中是特定的空指針,其值為0.在C語言中,以NULL作為指針的一個未生效狀態,其本身是一個非法的地址值。
2 初始化為常量字元串地址。
char * str = "test";
常量字元串在運行時會被放在常量空間中,於是這樣初始化後,地址是常量空間中的一個地址,對於該地址只能讀取,不可寫入。即str的值可以改,但是str指向的值是不可修改的。
3 初始化為變數地址。
這里的變數地址,包括全局變數,局部變數的地址,以及通過動態分配申請到的內存地址。
這種情況下,對指針指向的空間是可以修改的。
4 不做初始化。
這種情況在C語言中是允許的。如果為全局變數或靜態局部變數,系統默認初始化為0值,即NULL。而對於局部變數,將是一個隨機值。所以如果是局部變數不做初始化,在取其指向空間值前,必須為其指定一個合法的值,否則訪問會出錯。
Ⅵ C語言中char的用法
#include<stdio。h>
intmain()
{
inti;
charc;//定義一個char類型的變數。
c='a';//賦值
for(i=0;i<26;i++){
printf(「%c」,c);//輸出一個字元用%c,
c++;//charc增加1,依次可以得到:abcdef。。。。z
}
printf(「 」);
if(c<='z')
printf(「stillasmallletter。 」);
else
printf(「Notasmallletter。 」);
scanf(「%c」,&c);//輸入一個字元到c中。
charstr[10]=「AString」;//定義一個字元數組,它的初值是「AString」
for(i=0;str[i]!='