c++数组和指针
1.指针的运算,++,--,+,-
int var[MAX] = {10, 100, 200};
int *ptr;
// 指针中的数组地址
ptr = var;
for (int i = 0; i < MAX; i++)
{
cout << "Address of var[" << i << "] = ";
cout << ptr << endl;
cout << "Value of var[" << i << "] = ";
cout << *ptr << endl;
// 移动到下一个位置
ptr++;
}2. 如果定义个一个数组var,如果var加上运算符的话是不可以的
比如
int var[MAX] = {10, 100, 200};
for (int i = 0; i < MAX; i++)
{
*var = i; // 这是正确的语法
var++; // 这是不正确的
}
return 0;3.因为c++中没有String的变量类型,只有char,所以可以用指针数组的形式来表达string
比如
const char *names[MAX] = {
"Zara Ali",
"Hina Ali",
"Nuha Ali",
"Sara Ali",
};
for (int i = ; i < MAX; i++)
{
cout << "Value of names[" << i << "] = ";
cout << names[i] << endl;
}
return ;4.关于指针和数组的一些常识
、实际上并不存在多维数组,所谓的多维数组本质上是用一维数组模拟的。 、数组名是一个常量(意味着不允许对其进行赋值操作),其代表数组首元素的首地址。 、数组与指针的关系是因为数组下标操作符[],比如,int a[][]相当于*(*(a+)+) 。 、指针是一种变量,也具有类型,其占用内存空间大小和系统有关,一般32位系统下,sizeof(指针变量)=。 、指针可以进行加减算术运算,加减的基本单位是sizeof(指针所指向的数据类型)。 、对数组的数组名进行取地址(&)操作,其类型为整个数组类型。 、对数组的数组名进行sizeof运算符操作,其值为整个数组的大小(以字节为单位)。 、数组作为函数形参时会退化为指针。
5.指向指针的指针
int var; int *ptr; int **pptr; var = ; // 获取 var 的地址 ptr = &var; // 使用运算符 & 获取 ptr 的地址 pptr = &ptr; // 使用 pptr 获取值 cout << "Value of var :" << var << endl; cout << "Value available at *ptr :" << *ptr << endl; cout << "Value available at **pptr :" << **pptr << endl;
6.传递指针给函数
using namespace std;
void getSeconds(unsigned long *par);
int main ()
{
unsigned long sec;
getSeconds( &sec );
// 输出实际值
cout << "Number of seconds :" << sec << endl;
return ;
}
void getSeconds(unsigned long *par)
{
// 获取当前的秒数
*par = time( NULL );
return;
}以上的例子传递一个unsigned long型指针给函数getSeconds,并且在函数内部改变指针的值
7.函数返回类型为指针
// 要生成和返回随机数的函数
int * getRandom( )
{
static int r[10];
// 设置种子
srand( (unsigned)time( NULL ) );
for (int i = 0; i < 10; ++i)
{
r[i] = rand();
cout << r[i] << endl;
}
return r;
}
// 要调用上面定义函数的主函数
int main ()
{
// 一个指向整数的指针
int *p;
p = getRandom();
for ( int i = 0; i < 10; i++ )
{
cout << "*(p + " << i << ") : ";
cout << *(p + i) << endl;
}
return 0;
}*****:注意函数无法返回一个完整的数组,但是可以返回一个指针
相关推荐
csdnyasin 2020-06-28
penkgao 2020-06-13
qscool 2020-06-12
fengjing81 2020-06-06
AaronPlay 2020-06-02
lynjay 2020-06-02
twater000 2020-05-29
徐建岗网络管理 2020-05-13
qingsongzdq 2020-05-07
jeonkc 2020-05-06
lynjay 2020-05-03
徐建岗网络管理 2020-05-03
shangs00 2020-04-27
xuguiyi00 2020-04-22
qscool 2020-04-18
GoatSucker 2020-04-11