posts - 25, comments - 7, trackbacks - 0, articles - 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语言中的字符串那章
以前学的时候就没怎么看 因为关于字符和字符串操作的函数实在是太多了
数组和指针也是也它有很大的关系


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理