老是提示指针错误,求高人指教
发这里吧= =对于你的追问……指针实际就是一个整数,存的是你的内存地址(就是所指对象的首地址) 你的机器字长是多少位,指针也就是多少位 现在常见的都是32位的你要是不放心可以sizeof一下……话说这地方你不用纠结……这已经不是C语言要解决的问题了……
写了个关于指针的C++程序,但总是提示错误,求高手指正,感激不尽。
数组是int a[]或者int* a,这样改:#include用指向数组的指针时 出现错误,怎样解决。
。
。
。
1、字符串的复制不能用等号的啊,要用strcpy:strcpy(*(p+max), *(p+x));2、main中的循环for(int j=0;j<=n;j++),这个不对,应该没有等号,要不然要多一次循环 由于输入n后回车的问题可以在之前就把这个回车符干掉3、sort中的y值应该从x+1开始,而且结果条件少了一个等号,你想啊,输入3个数的话,n-2为1,条件为 x<1 你写的程序只能比较一次,3个字符串如何一次能比较出结果
4、直接给你贴上程序void sort(char (*p)[20],int n){ for(int x=0;x<=n-2;x++) { for(int y=x+1;y<=n-1;y++) { if(strcmp(*(p+x),*(p+y))>0) { char tmp[20] = {0}; strcpy((char*)tmp, (char*)(*(p+x))); strcpy((char*)(*(p+x)),(char*)(*(p+y))); strcpy((char*)(*(p+y)),(char*)tmp); } } }}int main(){ int n; char tmp[20]; char a[50][20],*p[50]; int i; cout<<请输入要排序的字符数组个数:; cin>>n; cin.getline(tmp,20); for(i=0;i 知道你最后这两个吗 *(p1+i)='\0'; *(p2+i)='\0';明显错了.越界了.并不能付值.这不是一个数组.要区分.只有4个字节的指针.还有一个最严重的错误: char *str1=abcdefg; char *str2=hijklmn;是指向常字符串的指针....不可能改字符串的内容的.多注意C你这个直接交换个指针就行了.ASSERT(str2);char *pszTemp = NULL;pszTemp = str2;str2 = str1;str1 = pszTemp;以前华为的经典面试题有个strcpy函数的写法的,对内存操作比较关注.看看去吧. 1.所谓的指针,就是java中的对象的引用。 比如String s;这个s就是指针。 2.所谓的空指针,就是指针的内容为空,比如上面的s,如果令它指向null,就是空指针。 3.所谓的空指针异常,就是一个指针是空指针,你还要去操作它,既然它指向的是空对象,它就不能使用这个对象的方法。 比如上面的s假如为null,你还要用s的方法,比如s.equals( String x);那么就会产生空指针异常。 因为与你传入的同,在该里面,默认先识别内部变量名。 所以报此错误 将char * dayo[]={Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}; 指针数组全局变量一下就可以了为什么总提示空指针错误
为什么提示错误是表达式必须包含指向对象的指针类型