int a[10],char*p=a,为什么C++中可以用p[i]来给数组啊赋值,而不是a[i]呢

供稿:hz-xin.com     日期:2025-01-13
c++中对于数组int a[9],*p=a,a+1,a++,++a,p+1,p++,++p有什么区别

a++和++a是错误的,编译都不会过,因为数组名是常指针。只剩下a+1和p+1了,它们在使用上是没有区别,指向了同一个地方,但a是常指针而p是普通指针!

p是数组指针,一开始将p指针指向了数组第6个元素a[5],那么p[-5]就是当前p指向的元素往前数五个,那么也就是a[0],也就是a数组第一个位置。

int a[10];数组名即是数组的首地址;
char*p=a;是错误的;char型指针只能指向char型数据,这里指向一个int型数组是不正确的;改为int*p=a;

p指向a数组,也就是说p和a是相等的,所以用p[i] a[i]都可以赋值的

首先,a是整型变量,你把它付给字符变量本身就是错误的。
其次用P[i]给数组赋值的是时候,它是指数组第i个元素的地址,这个你要搞清楚了。
然后a[i]指的是数组的第i个元素,不是地址。
指针它是c语言中的重点,希望我说的你能理解!

c++ primer中说, 只属于隐式转换的一种,数组名转换为指向该数组第一个元素的一个指针变量。但是这里应该是错的,应该改成int *p = a;

定义函数 void fun(char *p,int n[10])
int n[10]){int i; for(i=0;i<10;i++) n[i]=0; for(;*p;p++) if(*p>='0'&&*p<='9') n[*p-'0']++; }int main(){ char s[200]; int i,a[10]; gets(s); fun(s,a); printf("%d",a[0]); for(i=1;i<10;i++)printf(",%d",a[...

char a[10],??p=a;p=“china”与)char ??p;p=“china”在这中间??p指...
指针P:p=a:a为数组,意思是将p指向该数组的第1个元素对应的内存地址,即a[0];p=“china”:将p指向字符串的第一个字母对应的内存地址。在c语言中,指针和数组有时候等价,如:p=a[10];p[0]==a[0] p[6]==a[6] p[i]==a[i]可以直接引用p[]表示a[]的值。同理,字符串china...

char a[10],*p=a+3;则p-a的值为3 对么~
对的。char p=a+3;可以写成:char p;p=a+3;p是地址,a+3也是地址,p-a=3是说他们地址相差3;

char s[10]; char*p=s; 则下面不正确的表达式是() A.p=s+5 B.s=p+...
答案是:B,因为数组名表示数组的首元素地址,它是个常地址值,不能被修改,是不能作左值的。

{ char str [10],*p=str ; gets(p);
while (*(str +num )!=’\\0’)num ++;当str[num]的值为‘\\0’时,停止循环,然后 return num;那么num应该就等于字符串str的长度。所以这个程序是输入一个字符串,然后输出它的长度。

初学C语言 调用函数的方法排列出10个字符的逆序
include<stdio.h> int main(){ void turn(char t[]);int i,j;char a[10];printf("正序:");for(i=0;i<10;i++){ scanf("%c",&a[i]);} printf("\\n");turn(a);printf("逆序:");for(j=0;j<10;j++){ printf("%c",a[j]);\/\/j } return 0;} void turn(char t[]...

C语言怎么定义一个字符指针指向一个二维字符数组的首地址
二维数组也是“数组的数组”所以定义一个指向由m个元素组成的一维数组指针即可指向二维数组的首元素地址。如:char arr[2][2] = { { 'a', 'b' }, { 'c', 'd' } };char (*p)[2];p=arr; \/\/ p指向首元素地址。char c = *(p[0]+ 1);\/\/ 指向0行1列 即字符b ...

char a[10], *p = a; 为什么p++可以,a++不行呢? 面试,居然没有回答上来...
a是数组名,a虽然代表的也是数组a的起始地址,但它并不是真正的指针

char *p = malloc(10);
改成 char *p =(char*) malloc(10);因为malloc的函数原型为 void *malloc(unsigned int size);它默认分配的指针类型为空指针,需要强制转化为char型

定义函数 void fun(char *p,int n[10]),实现功能区分出给定字符串中字符...
int n[10]){int i; for(i=0;i<10;i++) n[i]=0; for(;*p;p++) if(*p>='0'&&*p<='9') n[*p-'0']++; }int main(){ char s[200]; int i,a[10]; gets(s); fun(s,a); printf("%d",a[0]); for(i=1;i<10;i++)printf(",%d",a[...