西溪洗 发表于 2017-10-17 01:03:58

二级指针字符串,使用总是存在越界问题


#include <stdio.h>
#include <strsafe.h>
int main()
{
   wchar_t **Word;

   
   Word=new wchar_t * ;
   *Word=new wchar_t ;
   


   Word=L"123456";
   Word=L'a';
   Word=L'a';

   printf("%s",Word);

   return 0;
}
其中Word的调用有越界问题,想动态分配空间给字符串数组,对于这种二级指针字符串该如何操作,才能做增删查改的操作

求道于盲 发表于 2017-10-17 08:57:47

不是越界
Word=L"123456";
这个Word 指向了一个字符串常量
Word=L'a';
这个操作企图修改字符串常量
所以错了
另外 printf是给普通字符串用的
宽字节字符串 你得用wprintf

西溪洗 发表于 2017-10-17 11:14:49

求道于盲 发表于 2017-10-17 08:57
不是越界

这个Word 指向了一个字符串常量


wchar_t **Word;
   
    Word=new wchar_t * ;
   *Word=new wchar_t;
   
   Word=L'a';
   Word=L'b';

这次调用,没有指向字符串,还是无法给Word添加字符

西溪洗 发表于 2017-10-18 16:27:03

请问是我的new方式有问题吗,Word不能改变,如果我想从这些字符串数组中依次录入字符,应该怎么办

闪电猫网络 发表于 2017-10-19 19:12:26

word,word,是里面的单个字符。,word是个指针数组,里面只有一个指针,指向的是 new wchar_t,
Word=L'a';
Word=L'b';
这样就可以了,我也是初学一周,纯个人理解。

西溪洗 发表于 2017-10-19 19:50:31

懂了,我给二级指针new的时候是new 的 wchar_t * 形式,*word 只能是一个地址,是连续的字符串,不是连续的字符,在给地址赋值常量字符的时候就会出现错误,要想挨个录入字符,我的方式是,声明一个字符指针,来间接录入

西溪洗 发表于 2017-10-19 19:51:06

感谢各位大侠了
页: [1]
查看完整版本: 二级指针字符串,使用总是存在越界问题