#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
int main()
{
int fd;
int count1,count2;
char buffer[100];
fd = open("data",O_RDWR);
printf("fd is %d\n",fd);
count1 = read(fd,buffer,100);
printf("buffer is %s\n length is %d\n",buffer,count1);
count2 = read(fd,buffer,100);
printf("buffer is %s\n length is %d\n",buffer,count2);
}
为什么我把char buffer[100]改为char *buffer就读取失败了 ?read 的返回结果是-1。 |
|
| 20分 |
都没有分配内存,往哪里读入呢?
|
|
意思是必须用malloc分配一块空间才行是吧。 |
|
| 5分 |
没地方存。。。
|
|
char *buffer = “test” |
|
| 5分 |
#pragma comment(linker,”/SECTION:.rdata,RW”)
//加这句可以让常量区可写,后果自负! |
| 5分 |
char *str;只是定义了一个指针,没有指向可用的内存,而char str[100]是定义了一个字符数组,长度为100,本身就是一块可用的内存。
|
| 5分 |
楼上各位大哥已说出原委,,,,char *只分配了自己这个指针数据类型的4个字节的内存,而字符数组是真真正正的在内存中开辟了一块用于存字符的空间。
|
|
谢谢楼上 各位的解答。看来我对这个存储空间没怎么考虑,以为有个地址就行了。
|
|