int型指针
int a = 4;
int *p = &a;
std::cout << sizeof(float) << std::endl; //sizeof(变量名) = sizeof(变量的类型)
std::cout << sizeof(a) << std::endl;
std::cout << &a << std::endl; //地址
std::cout << sizeof(&a) << std::endl; //地址的占用内存为8
std::cout << *p << std::endl; //等于a
std::cout << p << std::endl;// 等于&a
std::cout << sizeof(p) << std::endl; //等于sizeof(a)
- sizeof(变量名) = sizeof(变量的类型)
数组与指针
double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0}; //数组的名称就是一个指针,指向数组第一个元素的地址
double *p = balance;
std::cout << balance <<std::endl; //数组第一个元素的地址
std::cout << &balance[0] <<std::endl; //与上面相同
std::cout << *balance <<std::endl; //由于balance指向数组第一个元素的地址,所以取*等于第一个元素的值
//由于数组的名称就是一个指针,因此对于数组来说来说p的含义就等于balance
std::cout << p <<std::endl; //等于balance
std::cout << &p[0] <<std::endl; //等于&balance[0]
std::cout << *p <<std::endl; //等于*balance
字符串与字符串指针
char s = 'a'; //char表示单个字符, 后面只能跟''
char *ss = "1234a"; //ss表示字符串指针,指向一个字符串常量"1234a"
std::cout << sizeof(s) << std::endl; //输出1
std::cout << sizeof(char) << std::endl; //与上面相同
std::cout << sizeof(ss) << std::endl; //输出8
std::cout << sizeof(char *) << std::endl; //与上面相同 说明char *的内存占用为8
std::cout << ss << std::endl; //输出全部字符 这一点与前面指向数组的指针不一样,指向数组的指针名称等于第一个元素的地址,而这里为字符串
std::cout << *ss << std::endl; //输出ss的第1个字符,ss是指向字符串的指针 *ss就是第一个字符
std::cout << *(ss+1) << std::endl; //输出ss的第2个字符
std::cout << *(ss+2) << std::endl; //输出ss的第3个字符
std::cout << sizeof(*ss) << std::endl; //*ss为第1个字符,起占用内存与单个字符char型相同,为1
std::cout << (void*)(ss) << std::endl; //第1个字符的地址 这个与&ss不一样
std::cout << (void*)(ss+1) << std::endl; //第2个字符的地址
std::cout << (void*)(ss+2) << std::endl; //第3个字符的地址
- 将std::string类型转为char *,用.c_str()