第九章 指针【JOANNE FIRST】



第九章 指针

9.1 指针变量的定义和初始化

1.定义

类型关键字 *指针变量名

-int * pa
语句解读:*(间接寻址运算符:单目运算符,右结合性,2级)pa 是一个指针变量,指向一个整形变量

-int * p[4]
语句解读:[]优先级高于*,p是由4个指向整形变量的指针组成的数组

-int (*p)[4]
语句解读:(*p)=数组名,此时p指向一个列是4的二维数组

2.初始化

指针未初始化会给系统带来潜在威胁

-若没有具体指向
int *p=NULL(stdio.h中定义值为零的宏)

-若有具体指向
int a,b;char c;
int pa=&a;int pb=&b; char pc=&c;

【注意】指针变量只能指向同一基类型的变量
pc=&a;[×]

9.2 指针与内存

1.
int a=0;
int pa=&a;
*pa=9;
printf("a is %d,&a is %p,pa is %p,*pa is %d",a,&a,pa,*pa);

输出结果:a is 9,&a is 0023FF74,pa is 0023FF74,*pa is 9

2.
int a=0;
int pa;
printf("a is %d,&a is %p,pa is %p");

输出结果:a is 0,&a is 0023FF74,pa is 0023FF78;
pa未初始化,所以&a和pa的值不等

9.3 模拟按引用调用

按值调用:形参不能更改实参 返回途径:return 一个变量

为了解决按置调用的上述两个问题,引用指针做函数参数

模拟按引用调:形参和实参都指向同一块地方,可由形参更改实参;可以不用return做返回途径

 search例9.7

9.4 函数指针

-函数指针

int (*compare)(int a,int b)-------函数指针:同数组名是数组首地址,函数名是函数入口地址
                                            函数指针指向函数入口地址
语句解释:compare是一个指针变量,指向一个有两个参数,返回值是整型的函数

 search例9.9

-指针函数

int *compare(int a,int b)

语句解释:有两个整型参数,返回值是整型指针的函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
function varargout = mixexpPredict(model, X) %% Predict using mixture of experts model % If the response y is real-valued, we return % [mu, sigma2, post, muk, sigma2k] = mixexpPredict(model, X) % mu(i) = E[y | X(i,:)] % sigma2(i) = var[y | X(i,:)] % weights(i,k) = p(expert = k | X(i,:) % muk(i) = E[y | X(i,:), expert k] % sigma2k(i) = var[y | X(i,:), expert k] % % If the response y is categorical, we return % [yhat, prob] = mixexpPredict(model, X) % yhat(i) = argmax p(y|X(i,:)) % prob(i,c) = p(y=c|X(i,:)) % This file is from pmtk3.googlecode.com [N,D] = size(X); %X = standardize(X); %X = [ones(N,1) X]; if isfield(model, 'preproc') [X] = preprocessorApplyToTest(model.preproc, X); end K = model.nmix; if model.fixmix weights = repmat(model.mixweights, N, 1); else weights = softmaxPmtk(X*model.Wq); % weights(n,q) end if model.classifier % implemented by JoAnne Ting prob = zeros(N, size(model.Wy,2)); yhat_k = zeros(N, model.Nclasses, K); for k = 1:K yhat_k(:,:,k) = softmaxPmtk(X*model.Wy(:,:,k)); % Weighted vote prob = prob + yhat_k(:,:,k) .* repmat(weights(:,k), 1, size(model.Wy,2)); end yhat = maxidx(prob, [], 2); varargout{1} = yhat; varargout{2} = prob; else % mean of a mixture model is given by % E[x] = sum_k pik muk %mu = sum(weights .* (X*model.Wy), 2); % variance of a mixture model is given by % sum_k pi_k [Sigmak + muk*muk'] - E[x] E[x]' muk = zeros(N,K); vk = zeros(N,K); mu = zeros(N,1); v = zeros(N,1); for k=1:K muk(:,k) = X*model.Wy(:,k); mu = mu + weights(:,k) .* muk(:,k); vk(:,k) = model.sigma2(k); v = v + weights(:,k) .* (vk(:,k) + muk(:,k).^2); end v = v-mu.^2; varargout{1} = mu; varargout{2} = v; varargout{3} = weights; varargout{4} = muk; varargout{5} = vk; end end
07-13

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值