给指针数组赋值

CHZiroy 2012-08-08 09:44:48
现在想给指针数组赋值,每个成员都为NULL
char *a = new char[20];

for(int i = 0; i < 20; i++){
a + i = NULL
}


报错,说等号左边要是左值???

怎么给以指针数组每个成员都赋值为null
...全文
925 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
MFCANDPAI 2012-08-11
  • 打赏
  • 举报
回复
#include<stdio.h>

int main()
{
char *a;
a=NULL;
*a=NULL;这儿是错的,这个指针没有初始化
他指向的地方不知道是内存的什么地方,不能被更改,
但是指针变量可以赋值为空指针就是上条语句说描写的

}
MFCANDPAI 2012-08-11
  • 打赏
  • 举报
回复
#include<stdio.h>

int main()
{
char *a = new char[20];

for(int i = 0; i < 20; i++)
printf("%x\n",a+i);

}

new的作用是开辟一段内存地址或者内存区域,你看他们都是常数值,你还给她赋值,就错了
MFCANDPAI 2012-08-11
  • 打赏
  • 举报
回复
#include<stdio.h>

int main()
{
char *a = new char[20];

for(int i = 0; i < 20; i++)
*(a+i) = NULL;
for(int n = 0; n < 20; n++)
printf("%d\n",*(a+n));

}
chris君 2012-08-11
  • 打赏
  • 举报
回复
首先这只是个字符串指针。。。

其次用memset函数初始化。。。
New_options 2012-08-10
  • 打赏
  • 举报
回复
a+i这个表达式的值是地址,你是在给地址常量赋值,当然会报错,用*(a+i)=NULL 试试
躺枪同学 2012-08-10
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

指针数组与数组指针:char *p[] 和 char (* p)[];
哈哈,初学者很容易混乱的。。。。
[/Quote]
gongheguoyingpai11 2012-08-09
  • 打赏
  • 举报
回复
你这是一个char指针在很大程度上它就是一个char数组不是你说的指针数组
xxb249 2012-08-09
  • 打赏
  • 举报
回复
初始化用memset 很好的用的
linuxblack125125 2012-08-09
  • 打赏
  • 举报
回复
指针数组与数组指针:char *p[] 和 char (* p)[];
哈哈,初学者很容易混乱的。。。。
yht8708 2012-08-09
  • 打赏
  • 举报
回复
char *a[20]这是指针数组
char *a 仅是char型指针

夏天__ 2012-08-09
  • 打赏
  • 举报
回复

char *a = new char[20];

for(int i = 0; i < 20; i++){
*(a + i) = NULL
}

Zhangy-Pony 2012-08-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

这个哪里是指针数组,就是个char数组而已
[/Quote]
5楼正解啊,a + i只能做右值,没见过放在左边的……
rejoice914 2012-08-08
  • 打赏
  • 举报
回复
你这就是个字符串而已,不是指针数组
OSTnm 2012-08-08
  • 打赏
  • 举报
回复

a + i不能被赋值 因为它是个右值  不能出现在等号的左边


3楼++
Code_Talk 2012-08-08
  • 打赏
  • 举报
回复
是指针数组吧。
躺枪同学 2012-08-08
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;

int main(){
char *a = new char[20];
char *p = a;
for(int i = 0; i < 20; i++){
p = a + i;
p = NULL;
}
return 0;
}

羽飞 2012-08-08
  • 打赏
  • 举报
回复
这个哪里是指针数组,就是个char数组而已
IVERS0N 2012-08-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

LZ,你这是一个指针数组么?

你这是一个字符指针指向一个字符数组。

指针数组要这样定义:

char *a[20];
[/Quote]

你是对的
ies_sweet 2012-08-08
  • 打赏
  • 举报
回复
a+i 是一个表达式,只能作为右值

char *a[20];

for(int i = 0; i < 20; i++){
a[i] = NULL
}
躺枪同学 2012-08-08
  • 打赏
  • 举报
回复
好像我没搞对,不好意思,原来你这是C++
加载更多回复(1)

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧