1. 要改变c的值
#import <Foundation/Foundation.h>
void changec(char *a){
//*a是一个指针变量,那么传进来的需要是一个地址,以为指针变量只能存储地址
//*a 是找出a对应的存储内容,里面存放18对应的地址
*a=18;
}
int main(int argc,const char * argv[])
{
@autoreleasepool {
// insert code here...
char c;
c=10;
//c把地址传给函数
//那么a变量的存储内容就是c的地址,*a指向的是c的地址
//*a指的是a所对应的内容-c的地址名
//*a 是找出a对应的存储内容,里面存放18对应的地址
//此时c的地址名就是18的地址名
changec(&c);
NSLog(@"%i",c);
}
return 0;
}
2. 改变指针变量对应的值
2.1 值不变的情况
#import <Foundation/Foundation.h>
//*a是一个指针变量,那么传进来的需要是一个地址,以为指针变量只能存储地址
void changestring(NSString *b){
//*b 是一个指针变量,那么传进来的需要是一个地址,以为指针变量只能存储地址
//b 的内容存储的是456对应的地址
b=@"456";
}
int main(int argc,const char * argv[])
{
@autoreleasepool {
// 指针只能存储的是地址
//某地址对应的内容是123
//这就是指针str的存储内容是123对应的地址
NSString *str=@"123";
//将str传进去,此时d指针的内容也是123对应的地址
//d的存储内容改为了456对应的地址,此时跟str没关系
changestring(str);
//输出的str的值是不变的,还是123
NSLog(@"%@",str);
}
return 0;
}
2.2 以上程序可以分析出,如果想要改变str存储的内容,就是要把d存储123的地址给str,
那么只能先找到str的地址,那就是&str
之后&str付给指针*(*d),那么*d的存储内容就是str的地
现在*d 的内容指向456的地址
那就是str的内容为456的地址
#import <Foundation/Foundation.h>
void changestring(NSString **d){
*d=@"456";
}
int main(int argc,const char * argv[])
{
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
NSString *str=@"123";
// 指针只能存储的是地址
//某地址对应的内容是123
//这就是把123对应的地址付给了指针str的存储内容
changestring(str);
NSLog(@"%@",&str);
}
return 0;
}