Posted on 2007-10-17 21:06
谢龙飞 阅读(197)
评论(0) 编辑 收藏 引用
今天在linux做几个进程通信的实验老出错,搞了半天原来字符输入输出引起的错误
注意:
在C语言中print函数可以通过指针来访问 字符串
例如如下的代码:
#include <stdio.h>
void main(void)
{
int i;
char *a="hello";
printf("%s\n",a);
}
在这段代码中指针a 指向的是"hello"这个字符串(我的理解是实际指向的是一个 "hello\0"字符串,因为系统自动为字符串常量加一个'\0'表示字符串结束
例如如下的代码:
char a[5]={"hello"};
系统会报错,这是为什么呢???
答案是在存储字符串常量时 系统自动给字符串末尾加了一个'\0'
因此这个时候数组长度不够当然会报错了
应该如下定义和赋值:
char a[6]={"hello"};
还有一个未解决的问题是:
通过
char *a="hello";
语句之后 是不是*a='h' ,*(a+1)='e'......以此类推
我在VC上实验 情况到是这样的
明天在好好看下 C语言中的字符串那章
以前学的时候就没怎么看 因为关于字符和字符串操作的函数实在是太多了
数组和指针也是也它有很大的关系