可以:
#include <stdio.h>
int main(void)
{
char str[8] = {0};
str[0] = *"jiang";
printf("%s\n", str);
return 0;
}
输出结果是:
j
2012/5/16 更新
补充一个例子(正确):
#include <iostream>
using namespace std;
int main(void)
{
cout << "0123456789"[5] << endl;
return 0;
}
输出结果是:
5
2012/7/21
1、通过:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;
int main(int argc, char **argv)
{
char str[10];
char *p = str;
strcpy(p, "wwwww");
cout << p << endl;
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;
int main(int argc, char **argv)
{
char str[1];
char *p = str;
strcpy(p, "w"); //Debug Error: Stack around the variable 'str' was corrupted
// "w"占两个字节,而str是一个字节的字符数组
cout << p << endl;
return 0;
}
这个我感到奇怪,strcpy的第一个参数同样是指针,与第一个程序比较,难道这个p记录的信息还挺多?还扯上str了?还是strcpy本身就要检查?待解答。
3、通过:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;
int main(int argc, char **argv)
{
char *p = NULL;
p = "aaaaa";
cout << p << endl;
return 0;
}
"aaaaa"在文字常量区上,注意这里若用
strcpy(p, "aaaaa");
将出现运行时错误(编译通过),非法访问内存区域。