Here's a simple solution:
<div ng-init='model={ person: "", car: "" }'>
<div ng-controller="aCtrl">
<input type="text" ng-model="model.person" />
<button type="button" ng-click="Search()">XXX</button>
</div>
<div ng-controller="bCtrl">
<input type="text" ng-model="model.car" />
</div>
</div>
Simply go one step higher on the $scope and set your data on the parent scope. Notice that I updated the values bound to your inputs to reference properties of the new model object. By doing this, you reference an object on that parent scope rather than scalars, so that the reference to that object gets prototypically inherited by the child scopes. If this doesn't make much sense, the tl;dr version is:
Generally speaking, you want to make sure that your ng-model directives contain a dot.
You could also define an angular service to share data between the two controllers, but that's possibly overkill for what you need.