int a[]={2,4,7,8,9};
int n=sizeof(a)/sizeof(int);\\n是数组a中的个数
a也就能表示数组a[0]的首地址嘛,为什么sizeof(a)能表示整个数组的长度?
有关C++指针和数组的一个小问题
数组是一种类型,独立的类型,不是什么指针或者地址。所谓数组名能作为数组首地址,是因为c++进行了隐式的类型转换。就好像 char c = 'a';int i = c;一样,其实是int i = static_cast<int>(c);,只不过char类型被隐式转换成int不需要写出来。所以数组作为地址时c++其实做的是int *p=static_...
关于c++指针的问题请高手赐教
1、表达式中的数组名(与声明不同)被编译器当作一个指向该数组第一个元素的指针 因此如a[i]这样的访问都被编译器改写或解释为*(a+i)的形式,同样取下标操作符的操作数是可交换的,所以a[3]可以写成3[a],不过通常你不会这样做。2、下标总是与指针的偏移量相同,下标*sizeof(元素类型)就是偏...
请教C++二维数组和指针的简单问题。
主要是明白*s[2]这个是什么。其实有两个操作符,一个是解引用操作符*;另外一个是下标操作符[]。查一下优先级吧。应该先是下标操作所以*s[2]变成了*(s[2])。那么s[2]是什么呢?其实由定义char s[4][6]可以明白。s中存放的是指向字符串的指针。s[2]是一个指针,指向一个字符串。由下标...
c++问题,指针和数组
1、"int coats(10);*(coats+4)=12,指针是不是指向数组第五位元素"?回答"不是"。因为指针指向的是首元素,而+4以后是对编号为4的第五个元素操作。2、"*coats=&coats(4)这样的结果,(括号不要管)"也是不对的。因为*coats表示的是编号为0的首元素值(coats[0]),应该是*coats==...
c++指针与数组首地址的问题!
在具体一点: 假设数组的首地址是INDEX1(那么INDEX1就是a[0]的地址了~), 那么这个值存在a中, 而a放在地址为INDEX2的内存位置, 其值为INDEX1 p=a 结果为 p=INDEX1, 这个是你想要的 p=&a 结果为 p=INDEX2, 这个不是你要的吧 p=&(a[0]) 结果为 p=INDEX1, 也行 个人理解, 如有...
有关c++中数组与指针的关系
1,数组是一块内存连续的数据。2,指针是一个指向内存空间的变量。对于数组来说,数组的首地址,也可以用指针来表示操作,如:int a[10];int *p,n;p = a;对第一个元素取值,可以用几种方法:n =a[0];n = *p;n = p[0];n = *(p+0) ;3,不同的地方是数组是由编译器分配的空间,...
C++ 给数组指针赋值的一些问题?
C++ Primer中提到过,定义数组的名字看成一个指针,也就是说我现在这样定义一个数组 int ia[5];当我单独使用ia的时候,一般情况下它就是一个指针。(只有使用decltype的时候是数组类型)。ia默认指向第一个元素,使用下标是可以递增元素。例如:auto p = ia;p的类型为int*,指向ia的第一个元素,...
关于c++中指针数组赋值时的迷惑
P[1]=new int(x2);P[2]=new int(x3);对于此指针数组中的元素 p[0]p[1],p[2]动态分配内存,动态分贝内存就是使该指针有一个合法的地址,指针也就有了一个确切的指向。char p[6]={"Orange","Pear","Banana","Peach","Apple","Guava"} 字符串有其特殊性,字符串末尾以‘\\0’作为...
C++ 数组与指针
由于b是指针,无论是否指向a,指向什么,sizeof(b)等于sizeof(int),32位平台上等于4。以上讨论的问题引发的关于数组名称的问题:数组名本身是个地址常量,但是某些特殊情况下它的语义可以发生改变。例如sizeof(a),这时a表示整个数组对象(这里指语法对象,不是指类的实例)而不是这个常量本身。基于...
c\/c++中的指针的应用及注意问题
大家注意int *b[2]和int(*b)[2]是不同的,int *b表示一个指针数组,而int (*b)[2]表示含有两个元素的int指针,这里要注意运算优先级问题,有助于理解指针问题。在这里大概介绍基本概念就够了,至于具体使用方法,如赋值等,很多书都有介绍,我就不多说了。二、应用以及注意的问题1、 理解...