今天在linux做幾個進程通信的實驗老出錯,搞了半天原來字符輸入輸出引起的錯誤
注意:
在C語言中print函數(shù)可以通過指針來訪問 字符串
例如如下的代碼:
#include <stdio.h>
void main(void)
{
int i;
char *a="hello";
printf("%s\n",a);
}
在這段代碼中指針a 指向的是"hello"這個字符串(我的理解是實際指向的是一個 "hello\0"字符串,因為系統(tǒng)自動為字符串常量加一個'\0'表示字符串結束
例如如下的代碼:
char a[5]={"hello"};
系統(tǒng)會報錯,這是為什么呢???
答案是在存儲字符串常量時 系統(tǒng)自動給字符串末尾加了一個'\0'
因此這個時候數(shù)組長度不夠當然會報錯了
應該如下定義和賦值:
char a[6]={"hello"};
還有一個未解決的問題是:
通過
char *a="hello";
語句之后 是不是*a='h' ,*(a+1)='e'......以此類推
我在VC上實驗 情況到是這樣的
明天在好好看下 C語言中的字符串那章
以前學的時候就沒怎么看 因為關于字符和字符串操作的函數(shù)實在是太多了
數(shù)組和指針也是也它有很大的關系